Warning, /multimedia/kmix/CMakeLists.txt is written in an unsupported language. File is not indexed.
0001 cmake_minimum_required(VERSION 3.16) 0002 0003 # KDE Applications version, managed by release script. 0004 set(RELEASE_SERVICE_VERSION_MAJOR "23") 0005 set(RELEASE_SERVICE_VERSION_MINOR "03") 0006 set(RELEASE_SERVICE_VERSION_MICRO "70") 0007 set(RELEASE_SERVICE_VERSION "${RELEASE_SERVICE_VERSION_MAJOR}.${RELEASE_SERVICE_VERSION_MINOR}.${RELEASE_SERVICE_VERSION_MICRO}") 0008 0009 set(KMIX_VERSION ${RELEASE_SERVICE_VERSION}) 0010 project(kmix VERSION ${KMIX_VERSION}) 0011 # SOVERSION of the kmixcore library 0012 set(KMIX_VERSION_MAJOR 5) 0013 # Version of the configuration, originally from core/version.h 0014 set(KMIX_CONFIG_VERSION 3) 0015 0016 #################################################################################################### 0017 ########### options ################################################################################ 0018 #################################################################################################### 0019 0020 # Plasma dataengines are apparently deprecated and will be removed in Plasma 6 0021 option(BUILD_DATAENGINE "Build the Plasma dataengine" OFF) 0022 0023 #################################################################################################### 0024 ########### dependencies and tests ################################################################# 0025 #################################################################################################### 0026 0027 set (QT_MIN_VERSION "5.15.2") 0028 set (KF5_MIN_VERSION "5.90.0") 0029 set (PA_MIN_VERSION "0.9.16") 0030 set(KDE_COMPILERSETTINGS_LEVEL "5.82") 0031 find_package(ECM ${KF5_MIN_VERSION} REQUIRED NO_MODULE) 0032 set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH} ) 0033 set(CMAKE_CXX_STANDARD 17) 0034 set(CMAKE_CXX_STANDARD_REQUIRED ON) 0035 0036 include(KDEInstallDirs) 0037 include(KDECMakeSettings) 0038 include(KDECompilerSettings NO_POLICY_SCOPE) 0039 include(ECMInstallIcons) 0040 include(ECMQtDeclareLoggingCategory) 0041 include(GenerateExportHeader) 0042 0043 find_package(Qt${QT_MAJOR_VERSION} ${QT_MIN_VERSION} REQUIRED NO_MODULE COMPONENTS 0044 Core 0045 DBus 0046 Gui 0047 Widgets 0048 Xml 0049 ) 0050 0051 find_package(KF5 ${KF5_MIN_VERSION} REQUIRED COMPONENTS 0052 Completion 0053 Config 0054 ConfigWidgets 0055 Crash 0056 DBusAddons 0057 DocTools 0058 GlobalAccel 0059 I18n 0060 Notifications 0061 Solid 0062 WidgetsAddons 0063 WindowSystem 0064 XmlGui 0065 ) 0066 0067 if (BUILD_DATAENGINE) 0068 find_package(KF5Plasma ${KF5_MIN_VERSION} REQUIRED) 0069 set_package_properties(KF5Plasma PROPERTIES PURPOSE "Required to build the Plasma dataengine") 0070 endif () 0071 0072 # PulseAudio is an optional dependency 0073 find_package(PulseAudio "${PA_MIN_VERSION}") 0074 0075 # Canberra is an optional dependency 0076 find_package(Canberra) 0077 0078 # ALSA is an optional dependency 0079 find_package(ALSA) 0080 0081 #################################################################################################### 0082 ########### compile definitions #################################################################### 0083 #################################################################################################### 0084 0085 include_directories(${CMAKE_SOURCE_DIR} ${CMAKE_BINARY_DIR}) 0086 0087 add_definitions(-DTRANSLATION_DOMAIN=\"kmix\") 0088 add_definitions(-DKMIX_VERSION=\"${KMIX_VERSION}\") 0089 add_definitions(-DKMIX_CONFIG_VERSION=${KMIX_CONFIG_VERSION}) 0090 0091 if (ALSA_FOUND) 0092 set(HAVE_LIBASOUND2 TRUE) 0093 add_definitions(-DHAVE_LIBASOUND2) 0094 endif () 0095 0096 if (PulseAudio_FOUND) 0097 add_definitions(-DHAVE_PULSE) 0098 endif () 0099 0100 if (CANBERRA_FOUND) 0101 add_definitions(-DHAVE_CANBERRA) 0102 endif () 0103 0104 #################################################################################################### 0105 ########### subdirectories ######################################################################### 0106 #################################################################################################### 0107 0108 add_subdirectory(doc) 0109 add_subdirectory(pics) 0110 add_subdirectory(profiles) 0111 0112 if (BUILD_DATAENGINE) 0113 if (KF5Plasma_FOUND) 0114 add_subdirectory(plasma) 0115 endif () 0116 endif () 0117 0118 #################################################################################################### 0119 ########### definitions: logging ################################################################### 0120 #################################################################################################### 0121 0122 ecm_qt_declare_logging_category(kmix_debug_SRCS 0123 HEADER kmix_debug.h 0124 IDENTIFIER KMIX_LOG 0125 EXPORT kmixlogging 0126 DESCRIPTION "KMix sound mixer and volume control" 0127 CATEGORY_NAME org.kde.kmix) 0128 0129 #################################################################################################### 0130 ########### definitions: DBus adaptor ############################################################## 0131 #################################################################################################### 0132 0133 set(kmix_adaptor_SRCS 0134 dbus/dbusmixerwrapper.cpp 0135 dbus/dbusmixsetwrapper.cpp 0136 dbus/dbuscontrolwrapper.cpp 0137 ) 0138 0139 qt_add_dbus_adaptor( kmix_adaptor_SRCS dbus/org.kde.kmix.control.xml 0140 dbus/dbuscontrolwrapper.h DBusControlWrapper ) 0141 qt_add_dbus_adaptor( kmix_adaptor_SRCS dbus/org.kde.kmix.mixer.xml 0142 dbus/dbusmixerwrapper.h DBusMixerWrapper ) 0143 qt_add_dbus_adaptor( kmix_adaptor_SRCS dbus/org.kde.kmix.mixset.xml 0144 dbus/dbusmixsetwrapper.h DBusMixSetWrapper ) 0145 0146 install(FILES dbus/org.kde.kmix.control.xml DESTINATION ${KDE_INSTALL_DBUSINTERFACEDIR}) 0147 install(FILES dbus/org.kde.kmix.mixer.xml DESTINATION ${KDE_INSTALL_DBUSINTERFACEDIR}) 0148 install(FILES dbus/org.kde.kmix.mixset.xml DESTINATION ${KDE_INSTALL_DBUSINTERFACEDIR}) 0149 0150 #################################################################################################### 0151 ########### definitions: backends ################################################################## 0152 #################################################################################################### 0153 0154 set(kmix_backend_SRCS 0155 backends/mixer_backend.cpp 0156 backends/mixer_mpris2.cpp 0157 ) 0158 0159 if (HAVE_LIBASOUND2) 0160 set(kmix_backend_SRCS ${kmix_backend_SRCS} backends/mixer_alsa9.cpp backends/mixer_alsa9.h) 0161 endif () 0162 0163 if (PulseAudio_FOUND) 0164 set(kmix_backend_SRCS ${kmix_backend_SRCS} backends/mixer_pulse.cpp backends/mixer_pulse.h) 0165 endif () 0166 0167 #################################################################################################### 0168 ########### target: kmixcore library ############################################################### 0169 #################################################################################################### 0170 0171 set(kmixcore_SRCS 0172 core/MediaController.cpp 0173 core/mixertoolbox.cpp 0174 core/kmixdevicemanager.cpp 0175 core/ControlManager.cpp 0176 core/MasterControl.cpp 0177 core/mixer.cpp 0178 core/mixset.cpp 0179 core/mixdevice.cpp 0180 core/mixdevicecomposite.cpp 0181 core/volume.cpp 0182 core/MediaController.h 0183 core/mixertoolbox.h 0184 core/kmixdevicemanager.h 0185 core/ControlManager.h 0186 core/MasterControl.h 0187 core/mixer.h 0188 core/mixset.h 0189 core/mixdevice.h 0190 core/mixdevicecomposite.h 0191 core/volume.h 0192 ) 0193 0194 kconfig_add_kcfg_files(kmixcore_SRCS core/settings.kcfgc) 0195 0196 add_library(kmixcore SHARED 0197 ${kmixcore_SRCS} 0198 ${kmix_adaptor_SRCS} 0199 ${kmix_backend_SRCS} 0200 ${kmix_debug_SRCS} 0201 ) 0202 0203 target_link_libraries(kmixcore 0204 PUBLIC 0205 Qt::Core 0206 Qt::Widgets 0207 PRIVATE 0208 Qt::Xml 0209 Qt::DBus 0210 KF5::I18n 0211 KF5::Solid 0212 PUBLIC 0213 KF5::ConfigCore 0214 KF5::ConfigGui 0215 KF5::CoreAddons 0216 ) 0217 0218 set_target_properties(kmixcore PROPERTIES VERSION ${KMIX_VERSION} SOVERSION ${KMIX_VERSION_MAJOR}) 0219 generate_export_header(kmixcore BASE_NAME kmixcore EXPORT_FILE_NAME kmixcore_export.h) 0220 0221 if (HAVE_LIBASOUND2) 0222 target_link_libraries(kmixcore PRIVATE ALSA::ALSA) 0223 endif () 0224 0225 if (PulseAudio_FOUND) 0226 target_link_libraries(kmixcore PRIVATE PulseAudio::PulseAudio) 0227 endif () 0228 0229 if (CANBERRA_FOUND) 0230 # VolumeFeedback calls Canberra directly, so public linking is required 0231 target_link_libraries(kmixcore PUBLIC Canberra::Canberra) 0232 endif () 0233 0234 install(TARGETS kmixcore DESTINATION ${KDE_INSTALL_LIBDIR} LIBRARY NAMELINK_SKIP) 0235 install(FILES core/settings.kcfg RENAME kmixsettings.kcfg DESTINATION ${KDE_INSTALL_KCFGDIR}) 0236 0237 #################################################################################################### 0238 ########### target: kmixgui library ################################################################ 0239 #################################################################################################### 0240 0241 set(kmixgui_SRCS 0242 gui/dialogbase.cpp 0243 gui/dialogstatesaver.cpp 0244 gui/kmixdockwidget.cpp 0245 gui/kmixprefdlg.cpp 0246 gui/viewbase.cpp 0247 gui/viewdockareapopup.cpp 0248 gui/viewsliders.cpp 0249 gui/mixdevicewidget.cpp 0250 gui/mdwslider.cpp 0251 gui/mdwenum.cpp 0252 gui/kmixerwidget.cpp 0253 gui/verticaltext.cpp 0254 gui/volumeslider.cpp 0255 gui/kmixtoolbox.cpp 0256 gui/dialogaddview.cpp 0257 gui/dialogviewconfiguration.cpp 0258 gui/dialogselectmaster.cpp 0259 gui/dialogchoosebackends.cpp 0260 gui/guiprofile.cpp 0261 gui/toggletoolbutton.cpp 0262 gui/dialogbase.h 0263 gui/dialogstatesaver.h 0264 gui/kmixdockwidget.h 0265 gui/kmixprefdlg.h 0266 gui/viewbase.h 0267 gui/viewdockareapopup.h 0268 gui/viewsliders.h 0269 gui/mixdevicewidget.h 0270 gui/mdwslider.h 0271 gui/mdwenum.h 0272 gui/kmixerwidget.h 0273 gui/verticaltext.h 0274 gui/volumeslider.h 0275 gui/kmixtoolbox.h 0276 gui/dialogaddview.h 0277 gui/dialogviewconfiguration.h 0278 gui/dialogselectmaster.h 0279 gui/dialogchoosebackends.h 0280 gui/guiprofile.h 0281 gui/toggletoolbutton.h 0282 ) 0283 0284 add_library(kmixgui STATIC 0285 ${kmixgui_SRCS} 0286 ${kmix_debug_SRCS} 0287 ) 0288 0289 target_link_libraries(kmixgui 0290 kmixcore 0291 Qt::Core 0292 Qt::Widgets 0293 KF5::I18n 0294 KF5::ConfigCore 0295 KF5::ConfigGui 0296 KF5::GlobalAccel 0297 KF5::Notifications 0298 KF5::XmlGui 0299 KF5::WindowSystem 0300 ) 0301 0302 #################################################################################################### 0303 ########### target: kmix ########################################################################### 0304 #################################################################################################### 0305 0306 set(kmix_SRCS 0307 apps/main.cpp 0308 apps/kmixwindow.cpp 0309 apps/kmixapp.cpp 0310 apps/kmixwindow.h 0311 apps/kmixapp.h 0312 ${kmix_debug_SRCS} 0313 ) 0314 0315 if (CANBERRA_FOUND) 0316 set(kmix_SRCS ${kmix_SRCS} apps/volumefeedback.cpp apps/volumefeedback.h) 0317 endif () 0318 0319 add_executable(kmix ${kmix_SRCS}) 0320 target_link_libraries(kmix 0321 kmixcore 0322 kmixgui 0323 KF5::I18n 0324 KF5::CoreAddons 0325 KF5::DBusAddons 0326 KF5::GlobalAccel 0327 KF5::XmlGui 0328 KF5::Notifications 0329 KF5::WindowSystem 0330 ) 0331 0332 install(TARGETS kmix ${KDE_INSTALL_TARGETS_DEFAULT_ARGS}) 0333 0334 install(FILES desktop/kmixui.rc DESTINATION ${KDE_INSTALL_KXMLGUIDIR}/kmix) 0335 install(PROGRAMS desktop/org.kde.kmix.desktop DESTINATION ${KDE_INSTALL_APPDIR}) 0336 install(FILES desktop/org.kde.kmix.appdata.xml DESTINATION ${KDE_INSTALL_METAINFODIR}) 0337 install(FILES desktop/kmix_autostart.desktop DESTINATION ${KDE_INSTALL_AUTOSTARTDIR}) 0338 install(FILES desktop/kmix.notifyrc DESTINATION ${KDE_INSTALL_KNOTIFYRCDIR} ) 0339 0340 #################################################################################################### 0341 ########### target: kded_kmixd ##################################################################### 0342 #################################################################################################### 0343 0344 set(kmixd_SRCS 0345 apps/kmixd.cpp 0346 ${kmix_debug_SRCS} 0347 ) 0348 0349 add_library(kded_kmixd MODULE ${kmixd_SRCS}) 0350 set_target_properties(kded_kmixd PROPERTIES OUTPUT_NAME kmixd) 0351 kcoreaddons_desktop_to_json(kded_kmixd desktop/kmixd.desktop) 0352 0353 target_link_libraries(kded_kmixd 0354 kmixcore 0355 KF5::I18n 0356 KF5::CoreAddons 0357 KF5::DBusAddons 0358 ) 0359 0360 install(TARGETS kded_kmixd DESTINATION ${KDE_INSTALL_PLUGINDIR}/kf5/kded) 0361 0362 #################################################################################################### 0363 ########### target: kmixctrl ####################################################################### 0364 #################################################################################################### 0365 0366 set(kmixctrl_SRCS 0367 apps/kmixctrl.cpp 0368 ${kmix_debug_SRCS} 0369 ) 0370 0371 add_executable(kmixctrl ${kmixctrl_SRCS}) 0372 target_link_libraries(kmixctrl 0373 kmixcore 0374 KF5::I18n 0375 KF5::CoreAddons 0376 ) 0377 0378 install(TARGETS kmixctrl ${KDE_INSTALL_TARGETS_DEFAULT_ARGS}) 0379 0380 install(FILES desktop/kmixctrl_restore.desktop DESTINATION ${KDE_INSTALL_KSERVICESDIR}) 0381 0382 #################################################################################################### 0383 ########### tests ################################################################################## 0384 #################################################################################################### 0385 0386 if(BUILD_TESTING) 0387 find_package(Qt${QT_MAJOR_VERSION}Test ${QT_MIN_VERSION} CONFIG REQUIRED) 0388 add_subdirectory(tests) 0389 endif() 0390 0391 #################################################################################################### 0392 ########### other installs ######################################################################### 0393 #################################################################################################### 0394 0395 install(PROGRAMS apps/kmixremote DESTINATION ${KDE_INSTALL_BINDIR}) 0396 install(FILES desktop/restore_kmix_volumes.desktop DESTINATION ${KDE_INSTALL_AUTOSTARTDIR}) 0397 0398 ecm_qt_install_logging_categories(EXPORT kmixlogging 0399 FILE kmix.categories 0400 DESTINATION "${KDE_INSTALL_LOGGINGCATEGORIESDIR}") 0401 0402 ki18n_install(po) 0403 kdoctools_install(po) 0404 0405 #################################################################################################### 0406 ########### end #################################################################################### 0407 #################################################################################################### 0408 0409 feature_summary(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGES)