refactor(cmake): reorganize framework modules

main
reionwong 3 weeks ago
parent bb1751fad3
commit 5ca6ebc2f9

@ -25,6 +25,24 @@ find_package(Qt6 REQUIRED COMPONENTS
Qml
)
qt_policy(SET QTP0001 NEW)
function(cutefish_install_qml_module target)
qt_query_qml_module("${target}"
TARGET_PATH module_path
QMLDIR module_qmldir
TYPEINFO module_qmltypes
)
set(module_install_dir "${INSTALL_QMLDIR}/${module_path}")
install(TARGETS "${target}" DESTINATION "${module_install_dir}")
install(FILES "${module_qmldir}" DESTINATION "${module_install_dir}")
if(module_qmltypes)
install(FILES "${module_qmltypes}" DESTINATION "${module_install_dir}")
endif()
endfunction()
# Get the installation directory from Qt 6
find_program(QT_PATHS_EXECUTABLE NAMES qtpaths6 REQUIRED)
@ -41,9 +59,9 @@ endif()
add_subdirectory(applications)
add_subdirectory(accounts)
add_subdirectory(bluez)
add_subdirectory(mpris)
add_subdirectory(networkmanagement)
add_subdirectory(bluetooth)
add_subdirectory(media)
add_subdirectory(network)
add_subdirectory(screen)
add_subdirectory(system)
add_subdirectory(appearance)
add_subdirectory(audio)

@ -7,6 +7,23 @@ It provides common access to application metadata, networking, Bluetooth,
audio, display, appearance, accounts, media controls, and other desktop
services.
## Components
The framework provides these CMake targets and C++ aliases:
- `cutefish-framework-applications` / `Cutefish::Applications`
- `cutefish-framework-accounts` / `Cutefish::Accounts`
- `cutefish-framework-audio` / `Cutefish::Audio`
- `cutefish-framework-appearance` / `Cutefish::Appearance`
- `cutefish-framework-bluetooth` / `Cutefish::Bluetooth`
- `cutefish-framework-media` / `Cutefish::Media`
- `cutefish-framework-network` / `Cutefish::Network`
- `cutefish-framework-screen` / `Cutefish::Screen`
The QML modules are `Cutefish.Accounts`, `Cutefish.Appearance`,
`Cutefish.Audio`, `Cutefish.Bluetooth`, `Cutefish.Media`,
`Cutefish.Network`, and `Cutefish.Screen`.
## Dependencies
The framework uses Qt 6, KDE Frameworks 6, and a C++20 compiler.

@ -1,6 +1,6 @@
find_package(Qt6 REQUIRED COMPONENTS Core DBus Gui Quick)
set(ACCOUNTS_SRCS
set(CUTEFISH_ACCOUNTS_SOURCES
accountsmanager.cpp
accountsmanager.h
accountsmanager_p.h
@ -13,23 +13,31 @@ set(ACCOUNTS_SRCS
qmlplugins.cpp
)
qt6_add_dbus_interface(ACCOUNTS_SRCS
qt6_add_dbus_interface(CUTEFISH_ACCOUNTS_SOURCES
org.freedesktop.Accounts.User.xml
user_interface)
qt6_add_dbus_interface(ACCOUNTS_SRCS
qt6_add_dbus_interface(CUTEFISH_ACCOUNTS_SOURCES
org.freedesktop.Accounts.xml
accounts_interface)
# set_source_files_properties(${ACCOUNTS_SRCS} PROPERTIES SKIP_AUTOGEN ON)
add_library(cutefish-framework-accounts SHARED ${CUTEFISH_ACCOUNTS_SOURCES})
add_library(cutefishaccounts_qmlplugins SHARED ${ACCOUNTS_SRCS})
qt_add_qml_module(cutefish-framework-accounts
URI Cutefish.Accounts
VERSION 1.0
PLUGIN_TARGET cutefish-framework-accounts
CLASS_NAME QmlPlugins
NO_GENERATE_PLUGIN_SOURCE
OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/Cutefish/Accounts"
)
add_library(Cutefish::Accounts ALIAS cutefish-framework-accounts)
target_link_libraries (cutefishaccounts_qmlplugins
target_link_libraries(cutefish-framework-accounts PUBLIC
Qt6::Core
Qt6::DBus
Qt6::Quick
Qt6::Gui
)
install(TARGETS cutefishaccounts_qmlplugins DESTINATION ${INSTALL_QMLDIR}/Cutefish/Accounts)
install(FILES qmldir DESTINATION ${INSTALL_QMLDIR}/Cutefish/Accounts)
cutefish_install_qml_module(cutefish-framework-accounts)

@ -1,2 +0,0 @@
module Cutefish.Accounts
plugin cutefishaccounts_qmlplugins

@ -0,0 +1,29 @@
set(CUTEFISH_APPEARANCE_SOURCES
wallpaper.cpp
wallpaper.h
plugin.cpp
)
find_package(Qt6 REQUIRED COMPONENTS Core Gui Quick DBus)
add_library(cutefish-framework-appearance SHARED ${CUTEFISH_APPEARANCE_SOURCES})
qt_add_qml_module(cutefish-framework-appearance
URI Cutefish.Appearance
VERSION 1.0
PLUGIN_TARGET cutefish-framework-appearance
CLASS_NAME QmlPlugins
NO_GENERATE_PLUGIN_SOURCE
OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/Cutefish/Appearance"
)
add_library(Cutefish::Appearance ALIAS cutefish-framework-appearance)
target_link_libraries(cutefish-framework-appearance PUBLIC
Qt6::Core
Qt6::Quick
Qt6::Gui
Qt6::DBus
)
cutefish_install_qml_module(cutefish-framework-appearance)

@ -9,12 +9,12 @@ set(CUTEFISH_APPLICATIONS_SRCS
desktopentry.h
)
add_library(cutefishapplications STATIC ${CUTEFISH_APPLICATIONS_SRCS})
set_target_properties(cutefishapplications PROPERTIES POSITION_INDEPENDENT_CODE ON)
set_target_properties(cutefishapplications PROPERTIES CXX_STANDARD 17 CXX_STANDARD_REQUIRED ON)
add_library(cutefish-framework-applications STATIC ${CUTEFISH_APPLICATIONS_SRCS})
add_library(Cutefish::Applications ALIAS cutefish-framework-applications)
set_target_properties(cutefish-framework-applications PROPERTIES POSITION_INDEPENDENT_CODE ON)
target_include_directories(cutefishapplications PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
target_link_libraries(cutefishapplications
target_include_directories(cutefish-framework-applications PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
target_link_libraries(cutefish-framework-applications
PUBLIC
Qt6::Core
Qt6::DBus

@ -7,7 +7,7 @@ set(USE_GCONF False)
configure_file(config.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config.h)
set(audio_SRCS
set(CUTEFISH_AUDIO_SOURCES
card.cpp
client.cpp
context.cpp
@ -41,9 +41,8 @@ set(audio_SRCS
model/sortfiltermodel.cpp
)
set(qml_SRCS
qml/qmldir
qml/PulseObjectFilterModel.qml
set(CUTEFISH_AUDIO_QML_FILES
PulseObjectFilterModel.qml
)
find_package(PkgConfig)
@ -67,9 +66,21 @@ set_package_properties(SoundThemeFreedesktop PROPERTIES
pkg_check_modules(LIBPULSE libpulse REQUIRED IMPORTED_TARGET)
pkg_check_modules(LIBPULSE_MAINLOOP libpulse-mainloop-glib REQUIRED IMPORTED_TARGET)
add_library(cutefishaudio_qmlplugins SHARED ${audio_SRCS})
add_library(cutefish-framework-audio SHARED ${CUTEFISH_AUDIO_SOURCES})
target_link_libraries(cutefishaudio_qmlplugins
qt_add_qml_module(cutefish-framework-audio
URI Cutefish.Audio
VERSION 1.0
PLUGIN_TARGET cutefish-framework-audio
CLASS_NAME Plugin
NO_GENERATE_PLUGIN_SOURCE
OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/Cutefish/Audio"
QML_FILES ${CUTEFISH_AUDIO_QML_FILES}
)
add_library(Cutefish::Audio ALIAS cutefish-framework-audio)
target_link_libraries(cutefish-framework-audio PUBLIC
Qt6::Core
Qt6::Qml
Qt6::Gui
@ -81,5 +92,5 @@ target_link_libraries(cutefishaudio_qmlplugins
PkgConfig::LIBPULSE_MAINLOOP
)
install(TARGETS cutefishaudio_qmlplugins DESTINATION ${INSTALL_QMLDIR}/Cutefish/Audio)
install(FILES ${qml_SRCS} DESTINATION ${INSTALL_QMLDIR}/Cutefish/Audio)
cutefish_install_qml_module(cutefish-framework-audio)
install(FILES ${CUTEFISH_AUDIO_QML_FILES} DESTINATION ${INSTALL_QMLDIR}/Cutefish/Audio)

@ -1,4 +0,0 @@
module Cutefish.Audio
plugin cutefishaudio_qmlplugins
PulseObjectFilterModel 1.0 PulseObjectFilterModel.qml

@ -0,0 +1,41 @@
find_package(Qt6 REQUIRED COMPONENTS Core DBus Qml)
set(CUTEFISH_BLUETOOTH_SOURCES
declarativemanager.cpp
declarativeadapter.cpp
# declarativebattery.cpp
declarativedevice.cpp
declarativeinput.cpp
declarativemediaplayer.cpp
declarativedevicesmodel.cpp
bluezqtextensionplugin.cpp
applet/devicesproxymodel.cpp
applet/bluetoothagent.cpp
applet/bluetoothmanager.cpp
)
add_library(cutefish-framework-bluetooth SHARED ${CUTEFISH_BLUETOOTH_SOURCES})
find_package(KF6BluezQt REQUIRED)
qt_add_qml_module(cutefish-framework-bluetooth
URI Cutefish.Bluetooth
VERSION 1.0
PLUGIN_TARGET cutefish-framework-bluetooth
CLASS_NAME BluezQtExtensionPlugin
NO_GENERATE_PLUGIN_SOURCE
OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/Cutefish/Bluetooth"
QML_FILES DevicesModel.qml
)
add_library(Cutefish::Bluetooth ALIAS cutefish-framework-bluetooth)
target_link_libraries(cutefish-framework-bluetooth PUBLIC
Qt6::Core
Qt6::Qml
Qt6::DBus
KF6::BluezQt
)
cutefish_install_qml_module(cutefish-framework-bluetooth)
install(FILES DevicesModel.qml DESTINATION ${INSTALL_QMLDIR}/Cutefish/Bluetooth)

@ -4,8 +4,8 @@
* SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
*/
import Cutefish.Bluez 1.0 as Bluez
import Cutefish.Bluetooth 1.0 as Bluetooth
Bluez.DevicesModelPrivate {
manager: Bluez.Manager
Bluetooth.DevicesModelPrivate {
manager: Bluetooth.Manager
}

@ -66,7 +66,7 @@ void BluezQtExtensionPlugin::registerTypes(const char *uri)
{
using namespace BluezQt;
Q_ASSERT(QLatin1String(uri) == QLatin1String("Cutefish.Bluez"));
Q_ASSERT(QLatin1String(uri) == QLatin1String("Cutefish.Bluetooth"));
qmlRegisterSingletonType<DeclarativeManager>(uri, 1, 0, "Manager", manager_singleton);
qmlRegisterType<DeclarativeDevicesModel>(uri, 1, 0, "DevicesModelPrivate");

@ -14,7 +14,7 @@
class BluezQtExtensionPlugin : public QQmlExtensionPlugin
{
Q_OBJECT
Q_PLUGIN_METADATA(IID "Cutefish.Bluez")
Q_PLUGIN_METADATA(IID "Cutefish.Bluetooth")
public:
void registerTypes(const char *uri) override;

@ -1,30 +0,0 @@
find_package(Qt6 REQUIRED COMPONENTS Core DBus Qml)
set(bluezqtextensionplugin_SRCS
declarativemanager.cpp
declarativeadapter.cpp
# declarativebattery.cpp
declarativedevice.cpp
declarativeinput.cpp
declarativemediaplayer.cpp
declarativedevicesmodel.cpp
bluezqtextensionplugin.cpp
applet/devicesproxymodel.cpp
applet/bluetoothagent.cpp
applet/bluetoothmanager.cpp
)
add_library(cutefishbluez_qmlplugins SHARED ${bluezqtextensionplugin_SRCS})
find_package(KF6BluezQt REQUIRED)
target_link_libraries(cutefishbluez_qmlplugins
Qt6::Core
Qt6::Qml
Qt6::DBus
KF6::BluezQt
)
install(TARGETS cutefishbluez_qmlplugins DESTINATION ${INSTALL_QMLDIR}/Cutefish/Bluez)
install(FILES DevicesModel.qml DESTINATION ${INSTALL_QMLDIR}/Cutefish/Bluez)
install(FILES qmldir DESTINATION ${INSTALL_QMLDIR}/Cutefish/Bluez)

@ -1,4 +0,0 @@
module Cutefish.Bluez
plugin cutefishbluez_qmlplugins
DevicesModel 1.0 DevicesModel.qml

@ -1,6 +1,6 @@
find_package(Qt6 REQUIRED COMPONENTS Core DBus Gui Quick)
set(NETWORKMGR_SRCS
set(CUTEFISH_MEDIA_SOURCES
mpris.cpp
mpris.h
mpriscontroller_p.h
@ -24,14 +24,24 @@ set(NETWORKMGR_SRCS
qtdbusextended/dbusextendedpendingcallwatcher.cpp
)
add_library(cutefishmpris_qmlplugins SHARED ${NETWORKMGR_SRCS})
add_library(cutefish-framework-media SHARED ${CUTEFISH_MEDIA_SOURCES})
target_link_libraries (cutefishmpris_qmlplugins
qt_add_qml_module(cutefish-framework-media
URI Cutefish.Media
VERSION 1.0
PLUGIN_TARGET cutefish-framework-media
CLASS_NAME QmlPlugins
NO_GENERATE_PLUGIN_SOURCE
OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/Cutefish/Media"
)
add_library(Cutefish::Media ALIAS cutefish-framework-media)
target_link_libraries(cutefish-framework-media PUBLIC
Qt6::Core
Qt6::Quick
Qt6::Gui
Qt6::DBus
)
install(TARGETS cutefishmpris_qmlplugins DESTINATION ${INSTALL_QMLDIR}/Cutefish/Mpris)
install(FILES qmldir DESTINATION ${INSTALL_QMLDIR}/Cutefish/Mpris)
cutefish_install_qml_module(cutefish-framework-media)

@ -1,2 +0,0 @@
module Cutefish.Mpris
plugin cutefishmpris_qmlplugins

@ -1,6 +1,6 @@
find_package(Qt6 REQUIRED COMPONENTS Core DBus Gui Quick)
set(NETWORKMGR_SRCS
set(CUTEFISH_NETWORK_SOURCES
appletproxymodel.cpp
appletproxymodel.h
@ -47,10 +47,21 @@ set(NETWORKMGR_SRCS
find_package(KF6NetworkManagerQt REQUIRED)
find_package(KF6ModemManagerQt REQUIRED)
add_library(cutefishnm_qmlplugins SHARED ${NETWORKMGR_SRCS})
generate_export_header(cutefishnm_qmlplugins EXPORT_FILE_NAME ${CMAKE_CURRENT_BINARY_DIR}/networkmanager_export.h BASE_NAME NetworkManager)
add_library(cutefish-framework-network SHARED ${CUTEFISH_NETWORK_SOURCES})
generate_export_header(cutefish-framework-network EXPORT_FILE_NAME ${CMAKE_CURRENT_BINARY_DIR}/networkmanager_export.h BASE_NAME NetworkManager)
target_link_libraries (cutefishnm_qmlplugins
qt_add_qml_module(cutefish-framework-network
URI Cutefish.Network
VERSION 1.0
PLUGIN_TARGET cutefish-framework-network
CLASS_NAME QmlPlugins
NO_GENERATE_PLUGIN_SOURCE
OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/Cutefish/Network"
)
add_library(Cutefish::Network ALIAS cutefish-framework-network)
target_link_libraries(cutefish-framework-network PUBLIC
Qt6::Core
Qt6::Quick
Qt6::Gui
@ -60,5 +71,4 @@ target_link_libraries (cutefishnm_qmlplugins
KF6::ModemManagerQt
)
install(TARGETS cutefishnm_qmlplugins DESTINATION ${INSTALL_QMLDIR}/Cutefish/NetworkManagement)
install(FILES qmldir DESTINATION ${INSTALL_QMLDIR}/Cutefish/NetworkManagement)
cutefish_install_qml_module(cutefish-framework-network)

@ -1,3 +0,0 @@
module Cutefish.NetworkManagement
plugin cutefishnm_qmlplugins

@ -1,10 +1,3 @@
cmake_minimum_required(VERSION 3.5)
project(cutefish-screen LANGUAGES CXX)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTORCC ON)
set(SCREEN_SRCS
qt5/output.cpp
qt5/outputmodel.cpp
@ -15,14 +8,24 @@ set(SCREEN_SRCS
find_package(Qt6 REQUIRED COMPONENTS Core Gui Quick)
find_package(KF6Screen REQUIRED)
add_library(cutefishscreen_qmlplugins SHARED ${SCREEN_SRCS})
add_library(cutefish-framework-screen SHARED ${SCREEN_SRCS})
qt_add_qml_module(cutefish-framework-screen
URI Cutefish.Screen
VERSION 1.0
PLUGIN_TARGET cutefish-framework-screen
CLASS_NAME QmlPlugins
NO_GENERATE_PLUGIN_SOURCE
OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/Cutefish/Screen"
)
add_library(Cutefish::Screen ALIAS cutefish-framework-screen)
target_link_libraries (cutefishscreen_qmlplugins
target_link_libraries(cutefish-framework-screen PUBLIC
Qt6::Core
Qt6::Quick
Qt6::Gui
KF6::Screen
)
install(TARGETS cutefishscreen_qmlplugins DESTINATION ${INSTALL_QMLDIR}/Cutefish/Screen)
install(FILES qmldir DESTINATION ${INSTALL_QMLDIR}/Cutefish/Screen)
cutefish_install_qml_module(cutefish-framework-screen)

@ -1,3 +0,0 @@
module Cutefish.Screen
plugin cutefishscreen_qmlplugins

@ -1,19 +0,0 @@
set(SCREEN_SRCS
wallpaper.cpp
wallpaper.h
plugin.cpp
)
find_package(Qt6 REQUIRED COMPONENTS Core Gui Quick DBus)
add_library(cutefishsystem_qmlplugins SHARED ${SCREEN_SRCS})
target_link_libraries (cutefishsystem_qmlplugins
Qt6::Core
Qt6::Quick
Qt6::Gui
Qt6::DBus
)
install(TARGETS cutefishsystem_qmlplugins DESTINATION ${INSTALL_QMLDIR}/Cutefish/System)
install(FILES qmldir DESTINATION ${INSTALL_QMLDIR}/Cutefish/System)

@ -1,3 +0,0 @@
module Cutefish.System
plugin cutefishsystem_qmlplugins
Loading…
Cancel
Save