diff --git a/CMakeLists.txt b/CMakeLists.txt index 79fd6eddd..0f23e1323 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -328,25 +328,29 @@ endif() # create the executables if (SUBSURFACE_TARGET_EXECUTABLE MATCHES "MobileExecutable") + # set up Kirigami using KDE ECM + # that's available as kde-extra-cmake-modules on Homebrew, on all Linux flavors + # Android and iOS are built via qmake, Windows build of Subsurface-mobile isn't supported + find_package(ECM REQUIRED CONFIG) + set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake/ ${CMAKE_MODULE_PATH} ${ECM_MODULE_PATH}) + set(BREEZEICONS_DIR mobile-widgets/3rdparty/breeze-icons/) + + SET(QML_IMPORT_PATH ${QML_IMPORT_PATH} ${CMAKE_SOURCE_DIR}/mobile-widgets/3rdparty/kirigami/src ${CMAKE_SOURCE_DIR}/mobile-widgets/qml) + add_subdirectory(mobile-widgets/3rdparty) + include_directories(${CMAKE_SOURCE_DIR}/mobile-widgets/3rdparty/kirigami/src) + include(${CMAKE_SOURCE_DIR}/mobile-widgets/3rdparty/kirigami/KF5Kirigami2Macros.cmake) + set(MOBILE_SRC subsurface-mobile-main.cpp subsurface-helper.cpp ) - include_directories(${CMAKE_SOURCE_DIR}/mobile-widgets/qml/kirigami/src/libkirigami) - add_definitions(-DKIRIGAMI_BUILD_TYPE_STATIC) qt5_add_resources(MOBILE_RESOURCES mobile-widgets/qml/mobile-resources.qrc) - qt5_add_resources(MOBILE_RESOURCES mobile-widgets/qml/kirigami/kirigami.qrc) - # When building the mobile application in Android, link it and Qt will do the rest, when doing the mobile application on Desktop, create an executable. - if(ANDROID) - qt5_add_resources(MOBILE_RESOURCES android-mobile/font.qrc) - add_library(${SUBSURFACE_TARGET} SHARED ${SUBSURFACE_PKG} ${MOBILE_SRC} ${SUBSURFACE_RESOURCES} ${MOBILE_RESOURCES}) - else() - # the following is split across two commands since in cmake 3.12 this would result - # in a non-sensical "no sources given to target" error if done all as one set of - # arguments to the add_executable() call - add_executable(${SUBSURFACE_TARGET} ${SUBSURFACE_PKG} ${SUBSURFACE_RESOURCES}) - target_sources(${SUBSURFACE_TARGET} PUBLIC ${MOBILE_SRC} ${MOBILE_RESOURCES}) - endif() + + # the following is split across two commands since in cmake 3.12 this would result + # in a non-sensical "no sources given to target" error if done all as one set of + # arguments to the add_executable() call + add_executable(${SUBSURFACE_TARGET} ${SUBSURFACE_PKG} ${SUBSURFACE_RESOURCES}) + target_sources(${SUBSURFACE_TARGET} PUBLIC ${MOBILE_SRC} ${MOBILE_RESOURCES}) target_link_libraries( ${SUBSURFACE_TARGET} subsurface_mobile @@ -356,6 +360,7 @@ if (SUBSURFACE_TARGET_EXECUTABLE MATCHES "MobileExecutable") subsurface_models_mobile subsurface_commands subsurface_corelib + kirigamiplugin ${SUBSURFACE_LINK_LIBRARIES} ) elseif (SUBSURFACE_TARGET_EXECUTABLE MATCHES "DesktopExecutable") diff --git a/mobile-widgets/3rdparty/CMakeLists.txt b/mobile-widgets/3rdparty/CMakeLists.txt new file mode 100644 index 000000000..e0afef627 --- /dev/null +++ b/mobile-widgets/3rdparty/CMakeLists.txt @@ -0,0 +1,4 @@ +# simply pull in Kirigami, making sure it's statically built +option(BUILD_SHARED_LIBS "Build a shared module" OFF) + +add_subdirectory(kirigami) diff --git a/mobile-widgets/CMakeLists.txt b/mobile-widgets/CMakeLists.txt index 9f5ddaf47..4e4135a5a 100644 --- a/mobile-widgets/CMakeLists.txt +++ b/mobile-widgets/CMakeLists.txt @@ -4,25 +4,9 @@ set(SUBSURFACE_MOBILE_SRCS qmlinterface.cpp qmlmanager.cpp themeinterface.cpp - qml/kirigami/src/columnview.cpp - qml/kirigami/src/delegaterecycler.cpp - qml/kirigami/src/enums.cpp - qml/kirigami/src/formlayoutattached.cpp - qml/kirigami/src/icon.cpp - qml/kirigami/src/kirigamiplugin.cpp - qml/kirigami/src/mnemonicattached.cpp - qml/kirigami/src/scenepositionattached.cpp - qml/kirigami/src/settings.cpp - qml/kirigami/src/wheelhandler.cpp - qml/kirigami/src/libkirigami/basictheme.cpp - qml/kirigami/src/libkirigami/kirigamipluginfactory.cpp - qml/kirigami/src/libkirigami/platformtheme.cpp - qml/kirigami/src/libkirigami/tabletmodewatcher.cpp ) if (SUBSURFACE_TARGET_EXECUTABLE MATCHES "MobileExecutable") - include_directories(${CMAKE_SOURCE_DIR}/mobile-widgets/qml/kirigami/src/libkirigami) - add_definitions(-DKIRIGAMI_BUILD_TYPE_STATIC) add_library(subsurface_mobile STATIC ${SUBSURFACE_MOBILE_SRCS}) target_link_libraries(subsurface_mobile ${QT_LIBRARIES}) endif() diff --git a/mobile-widgets/qml/mobile-resources.qrc b/mobile-widgets/qml/mobile-resources.qrc index 7e6f9bc06..78b5f2ed3 100644 --- a/mobile-widgets/qml/mobile-resources.qrc +++ b/mobile-widgets/qml/mobile-resources.qrc @@ -96,34 +96,8 @@ icons/ic_sort_24px.svg icons/local_offer.svg - - kirigami/icons/application-menu.svg - kirigami/icons/dialog-cancel.svg - kirigami/icons/distribute-horizontal-x.svg - kirigami/icons/document-edit.svg - kirigami/icons/document-save.svg - kirigami/icons/go-up.svg - kirigami/icons/gps.svg - kirigami/icons/handle-left.svg - kirigami/icons/handle-right.svg - kirigami/icons/map-globe.svg - kirigami/icons/list-add.svg - kirigami/icons/overflow-menu.svg - kirigami/icons/trash-empty.svg - kirigami/icons/edit-copy.svg - kirigami/icons/edit-paste.svg - kirigami/icons/view-readermode.svg - - - kirigami/icons/go-next.svg - kirigami/icons/go-previous.svg - kirigami/icons/go-next.svg - kirigami/icons/go-previous.svg - - - ../../xslt/commonTemplates.xsl diff --git a/scripts/get-dep-lib.sh b/scripts/get-dep-lib.sh index 3a0bb5901..c81b1711a 100755 --- a/scripts/get-dep-lib.sh +++ b/scripts/get-dep-lib.sh @@ -13,7 +13,7 @@ CURRENT_XSLT="v1.1.34" CURRENT_SQLITE="3190200" CURRENT_LIBXML2="v2.9.4" CURRENT_LIBFTDI="1.3" -CURRENT_KIRIGAMI="v5.62.0" +CURRENT_KIRIGAMI="v5.76.0" CURRENT_BREEZE_ICONS="4daac191fb33c8c03bba8356db9767816cb8ee02" CURRENT_MDBTOOLS="master" CURRENT_QT_ANDROID_CMAKE="master" diff --git a/scripts/mobilecomponents.sh b/scripts/mobilecomponents.sh index 64538c44b..e295c49d8 100755 --- a/scripts/mobilecomponents.sh +++ b/scripts/mobilecomponents.sh @@ -14,6 +14,17 @@ if [ ! -d "$SRC/subsurface" ] || [ ! -d "mobile-widgets" ] || [ ! -d "core" ] ; exit 1 fi +# completely changing the Kirigami build, going down the path that the +# Kirigami developers favor, which is to install Kirigami and Breeze in +# a 3rdparty folder within our sources +./scripts/get-dep-lib.sh single "$SRC"/subsurface/mobile-widgets/3rdparty kirigami +./scripts/get-dep-lib.sh single "$SRC"/subsurface/mobile-widgets/3rdparty breeze-icons + + +exit 0 + + + # now bring in the latest Kirigami mobile components plus a couple of icons that we need # first, get the latest from upstream # yes, this is a bit overkill as we clone a lot of stuff for just a few files, but this way @@ -64,7 +75,7 @@ sed -i -e "s/width: backgroundRect/enabled: root.enabled; width: backgroundRe # double defined symbols in our setting. I would like a nicer fix for this # issue, but failed to find one. For example, not adding the resource in # our build causes the qrc file not to be generated. Manual generation -# of the resource file (using rcc) introduces the double symbols again. +# of the resource file (using rcc) introduces the double symbols again. # so it seems some Kirigami weirdness (but their staticcmake example compiles # correctly).