diff --git a/CMakeLists.txt b/CMakeLists.txt index ca0d986..5c9ab36 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,62 +1,77 @@ cmake_minimum_required(VERSION 3.0) project(plasma-volume-control) set(PROJECT_VERSION "5.15.0") set(PROJECT_VERSION_MAJOR 5) set(QT_MIN_VERSION "5.11.0") set(KF5_MIN_VERSION "5.54.0") find_package(ECM ${KF5_MIN_VERSION} REQUIRED NO_MODULE) set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake/) add_definitions(-DTRANSLATION_DOMAIN=\"kcm_pulseaudio\" -DQT_NO_KEYWORDS) include(FeatureSummary) include(KDEInstallDirs) include(KDECMakeSettings) include(KDECompilerSettings NO_POLICY_SCOPE) include(ECMOptionalAddSubdirectory) include(FindPkgConfig) pkg_check_modules(GCONF gconf-2.0) pkg_check_modules(GOBJECT gobject-2.0) if (GCONF_FOUND AND GOBJECT_FOUND) set(HAVE_GCONF TRUE) endif() find_package(Qt5 ${QT_MIN_VERSION} REQUIRED COMPONENTS Core Gui DBus Widgets Quick ) find_package(KF5 ${KF5_MIN_VERSION} REQUIRED COMPONENTS CoreAddons Declarative DocTools GlobalAccel I18n Plasma ) find_package(PulseAudio 5.0.0 REQUIRED) find_package(Canberra REQUIRED) find_package(GLIB2 REQUIRED) +find_package(CanberraPulse) +set_package_properties(CanberraPulse PROPERTIES + DESCRIPTION "Pulseaudio backend for libcanberra" + PURPOSE "Required for volume feedback sounds" + TYPE RUNTIME +) + +find_package(SoundThemeFreedesktop) +set_package_properties(SoundThemeFreedesktop PROPERTIES + DESCRIPTION "The standard freedesktop sound theme" + PURPOSE "Required for volume feedback sounds" + URL "https://www.freedesktop.org/wiki/Specifications/sound-theme-spec/" + TYPE RUNTIME +) + find_package(KF5Kirigami2 ${KF5_MIN_VERSION} CONFIG) set_package_properties(KF5Kirigami2 PROPERTIES DESCRIPTION "A QtQuick based components set" PURPOSE "Required at runtime the KCM" TYPE RUNTIME ) configure_file(config.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config.h) add_subdirectory(applet) add_subdirectory(src) add_subdirectory(data) add_subdirectory(doc) feature_summary(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGES) diff --git a/cmake/FindCanberra.cmake b/cmake/FindCanberra.cmake index 48e2d54..6bfc660 100644 --- a/cmake/FindCanberra.cmake +++ b/cmake/FindCanberra.cmake @@ -1,50 +1,57 @@ # - Find libcanberra's libraries and headers. # This module defines the following variables: # # CANBERRA_FOUND - true if libcanberra was found # CANBERRA_LIBRARIES - libcanberra libraries to link against # CANBERRA_INCLUDE_DIRS - include path for libcanberra +# CANBERRA_VERSION - version of libcanberra # # Copyright (c) 2012 Raphael Kubo da Costa +# Copyright (c) 2019 Harald Sitter # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # 3. Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS # OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF # SUCH DAMAGE. find_package(PkgConfig) pkg_check_modules(PC_CANBERRA libcanberra) find_library(CANBERRA_LIBRARIES NAMES canberra HINTS ${PC_CANBERRA_LIBRARY_DIRS} ${PC_CANBERRA_LIBDIR} ) find_path(CANBERRA_INCLUDE_DIRS NAMES canberra.h HINTS ${PC_CANBERRA_INCLUDE_DIRS} ${PC_CANBERRA_INCLUDEDIR} ) +set(CANBERRA_VERSION ${PC_CANBERRA_VERSION}) + include(FindPackageHandleStandardArgs) -find_package_handle_standard_args(Canberra REQUIRED_VARS CANBERRA_LIBRARIES CANBERRA_INCLUDE_DIRS) +find_package_handle_standard_args(Canberra + REQUIRED_VARS CANBERRA_LIBRARIES CANBERRA_INCLUDE_DIRS + VERSION_VAR CANBERRA_VERSION +) -mark_as_advanced(CANBERRA_LIBRARIES CANBERRA_INCLUDE_DIRS) +mark_as_advanced(CANBERRA_LIBRARIES CANBERRA_INCLUDE_DIRS CANBERRA_VERSION) diff --git a/cmake/FindCanberra.cmake b/cmake/FindCanberraPulse.cmake similarity index 67% copy from cmake/FindCanberra.cmake copy to cmake/FindCanberraPulse.cmake index 48e2d54..1073f5e 100644 --- a/cmake/FindCanberra.cmake +++ b/cmake/FindCanberraPulse.cmake @@ -1,50 +1,46 @@ -# - Find libcanberra's libraries and headers. +# - Find libcanberra's pulseaudio backend. # This module defines the following variables: # -# CANBERRA_FOUND - true if libcanberra was found -# CANBERRA_LIBRARIES - libcanberra libraries to link against -# CANBERRA_INCLUDE_DIRS - include path for libcanberra +# CanberraPulse_FOUND - true if the backend was found # -# Copyright (c) 2012 Raphael Kubo da Costa +# Copyright (c) 2019 Harald Sitter # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # 3. Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS # OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF # SUCH DAMAGE. -find_package(PkgConfig) -pkg_check_modules(PC_CANBERRA libcanberra) +find_package(Canberra) -find_library(CANBERRA_LIBRARIES - NAMES canberra - HINTS ${PC_CANBERRA_LIBRARY_DIRS} ${PC_CANBERRA_LIBDIR} -) - -find_path(CANBERRA_INCLUDE_DIRS - NAMES canberra.h - HINTS ${PC_CANBERRA_INCLUDE_DIRS} ${PC_CANBERRA_INCLUDEDIR} +find_library(CanberraPulse_LIBRARY canberra-pulse + PATH_SUFFIXES libcanberra libcanberra-${CANBERRA_VERSION} ) include(FindPackageHandleStandardArgs) -find_package_handle_standard_args(Canberra REQUIRED_VARS CANBERRA_LIBRARIES CANBERRA_INCLUDE_DIRS) +find_package_handle_standard_args(CanberraPulse + FOUND_VAR CanberraPulse_FOUND + REQUIRED_VARS CanberraPulse_LIBRARY +) +mark_as_advanced(CanberraPulse_LIBRARY) -mark_as_advanced(CANBERRA_LIBRARIES CANBERRA_INCLUDE_DIRS) +# NB: CanberraPulse_LIBRARY is intentionally not documented as it serves no +# public purpose (it's a plugin, not a library). diff --git a/cmake/FindCanberra.cmake b/cmake/FindSoundThemeFreedesktop.cmake similarity index 67% copy from cmake/FindCanberra.cmake copy to cmake/FindSoundThemeFreedesktop.cmake index 48e2d54..be35f97 100644 --- a/cmake/FindCanberra.cmake +++ b/cmake/FindSoundThemeFreedesktop.cmake @@ -1,50 +1,43 @@ -# - Find libcanberra's libraries and headers. +# - Find sound-theme-freedesktop via XDG_DATA_DIRS # This module defines the following variables: # -# CANBERRA_FOUND - true if libcanberra was found -# CANBERRA_LIBRARIES - libcanberra libraries to link against -# CANBERRA_INCLUDE_DIRS - include path for libcanberra +# SoundThemeFreeDesktop_FOUND - true if the sound theme is found +# SoundThemeFreeDesktop_PATH - path to the index.theme file # -# Copyright (c) 2012 Raphael Kubo da Costa +# Copyright (c) 2019 Harald Sitter # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # 3. Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS # OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF # SUCH DAMAGE. -find_package(PkgConfig) -pkg_check_modules(PC_CANBERRA libcanberra) - -find_library(CANBERRA_LIBRARIES - NAMES canberra - HINTS ${PC_CANBERRA_LIBRARY_DIRS} ${PC_CANBERRA_LIBDIR} -) - -find_path(CANBERRA_INCLUDE_DIRS - NAMES canberra.h - HINTS ${PC_CANBERRA_INCLUDE_DIRS} ${PC_CANBERRA_INCLUDEDIR} +find_file(SoundThemeFreeDesktop_PATH "sounds/freedesktop/index.theme" + PATHS ENV XDG_DATA_DIRS /usr/local/share/ /usr/share/ + NO_DEFAULT_PATH ) include(FindPackageHandleStandardArgs) -find_package_handle_standard_args(Canberra REQUIRED_VARS CANBERRA_LIBRARIES CANBERRA_INCLUDE_DIRS) - -mark_as_advanced(CANBERRA_LIBRARIES CANBERRA_INCLUDE_DIRS) +find_package_handle_standard_args(SoundThemeFreeDesktop + FOUND_VAR SoundThemeFreeDesktop_FOUND + REQUIRED_VARS SoundThemeFreeDesktop_PATH +) +mark_as_advanced(SoundThemeFreeDesktop_PATH)