Warning, /libraries/phonon/CMakeLists.txt is written in an unsupported language. File is not indexed.
0001 cmake_minimum_required(VERSION 3.5 FATAL_ERROR) 0002 project(Phonon VERSION "4.12.0") 0003 0004 include(FeatureSummary) 0005 0006 option(PHONON_BUILD_EXPERIMENTAL "Build the experimental library" ON) 0007 option(PHONON_BUILD_DEMOS "Build the demos" OFF) 0008 option(PHONON_BUILD_DESIGNER_PLUGIN "Build the Qt Designer plugin" ON) 0009 option(PHONON_BUILD_DOC "Build the API documentation" OFF) 0010 option(PHONON_BUILD_SETTINGS "Build the settings GUI" ON) 0011 option(PHONON_BUILD_QT5 "Build for Qt5" ON) 0012 option(PHONON_BUILD_QT6 "Build for Qt6" ON) 0013 option(PHONON_NO_CAPTURE "Disable the capture capabilities") 0014 0015 # CI is stupid and doesn't allow us to set CMAKE options per build variant 0016 if($ENV{CI_JOB_NAME_SLUG} MATCHES "qt5") 0017 set(PHONON_BUILD_QT5 ON) 0018 set(PHONON_BUILD_QT6 OFF) 0019 elseif($ENV{CI_JOB_NAME_SLUG} MATCHES "qt6") 0020 set(PHONON_BUILD_QT5 OFF) 0021 set(PHONON_BUILD_QT6 ON) 0022 endif() 0023 0024 set(VERSIONS) 0025 if(PHONON_BUILD_QT5) 0026 list(APPEND VERSIONS "5") 0027 endif() 0028 if(PHONON_BUILD_QT6) 0029 list(APPEND VERSIONS "6") 0030 set(BUILD_WITH_QT6 ON) # necessary on older ECMs 0031 endif() 0032 0033 # Not set by ECM (yet) 0034 set(CMAKE_AUTOUIC TRUE) 0035 set(CMAKE_AUTORCC TRUE) 0036 0037 set(QT_NO_CREATE_VERSIONLESS_TARGETS ON) 0038 set(QT_NO_CREATE_VERSIONLESS_FUNCTIONS ON) 0039 0040 find_package(ECM 5.90 NO_MODULE) 0041 set_package_properties(ECM PROPERTIES 0042 TYPE REQUIRED 0043 DESCRIPTION "Extra CMake Modules" 0044 URL "https://api.kde.org/frameworks/extra-cmake-modules/html/index.html") 0045 feature_summary(WHAT REQUIRED_PACKAGES_NOT_FOUND FATAL_ON_MISSING_REQUIRED_PACKAGES) 0046 set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake) 0047 set(KDE_COMPILERSETTINGS_LEVEL "5.82") 0048 include(KDECompilerSettings NO_POLICY_SCOPE) 0049 0050 include(CMakePackageConfigHelpers) 0051 include(ECMGeneratePkgConfigFile) 0052 include(ECMPoQmTools) 0053 include(ECMSetupVersion) 0054 0055 foreach(version ${VERSIONS}) 0056 set(QT_MAJOR_VERSION ${version}) 0057 0058 include(KDEInstallDirs${version}) 0059 include(KDECMakeSettings) 0060 include(ECMGeneratePriFile) 0061 0062 set(PHONON_LIB_SONAME phonon4qt${QT_MAJOR_VERSION}) 0063 set(PHONON_LIB_SONAME_CAMEL Phonon4Qt${QT_MAJOR_VERSION}) 0064 0065 ecm_setup_version(PROJECT 0066 VARIABLE_PREFIX PHONON 0067 SOVERSION 4 0068 VERSION_HEADER ${PHONON_LIB_SONAME}/phonon_version.h 0069 PACKAGE_VERSION_FILE ${PHONON_LIB_SONAME_CAMEL}ConfigVersion.cmake 0070 ) 0071 0072 # Glorified write_basic_package_version_file call for experimental. Experimental 0073 # inherits the versions from Phonon proper, so we technically don't need this. 0074 ecm_setup_version(${PHONON_VERSION} 0075 VARIABLE_PREFIX PHONON_EXPERIMENTAL 0076 SOVERSION ${PHONON_SOVERSION} 0077 PACKAGE_VERSION_FILE ${PHONON_LIB_SONAME_CAMEL}ExperimentalConfigVersion.cmake 0078 ) 0079 0080 set(INCLUDE_INSTALL_DIR "${KDE_INSTALL_INCLUDEDIR}/${PHONON_LIB_SONAME}") 0081 set(PLUGIN_INSTALL_DIR ${KDE_INSTALL_QTPLUGINDIR}) 0082 if(WIN32) # Imported from Phonon VLC 0083 set(PLUGIN_INSTALL_DIR ${KDE_INSTALL_BINDIR}) 0084 endif() 0085 set(BACKEND_DIR_SUFFIX "${PHONON_LIB_SONAME}_backend") 0086 set(BACKEND_INSTALL_DIR "${PLUGIN_INSTALL_DIR}/${BACKEND_DIR_SUFFIX}") 0087 0088 set(PHONON_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}) 0089 0090 ################################# Requirements ################################# 0091 0092 set(REQUIRED_QT_VERSION 5.15.0) 0093 0094 # Core Requirements 0095 find_package(Qt${QT_MAJOR_VERSION}Core ${REQUIRED_QT_VERSION}) 0096 set_package_properties(Qt${QT_MAJOR_VERSION}Core PROPERTIES 0097 TYPE REQUIRED 0098 DESCRIPTION "Qt${QT_MAJOR_VERSION} core module" 0099 URL "https://www.qt.io/download") 0100 # https://bugreports.qt.io/browse/QTBUG-114706 0101 add_library(Qt::Core ALIAS Qt${QT_MAJOR_VERSION}::Core) 0102 0103 find_package(Qt${QT_MAJOR_VERSION}Gui ${REQUIRED_QT_VERSION}) 0104 set_package_properties(Qt${QT_MAJOR_VERSION}Gui PROPERTIES 0105 TYPE REQUIRED 0106 DESCRIPTION "Qt${QT_MAJOR_VERSION} GUI module" 0107 URL "https://www.qt.io/download") 0108 # https://bugreports.qt.io/browse/QTBUG-114706 0109 add_library(Qt::Gui ALIAS Qt${QT_MAJOR_VERSION}::Gui) 0110 0111 find_package(Qt${QT_MAJOR_VERSION}Widgets ${REQUIRED_QT_VERSION}) 0112 set_package_properties(Qt${QT_MAJOR_VERSION}Widgets PROPERTIES 0113 TYPE REQUIRED 0114 DESCRIPTION "Qt${QT_MAJOR_VERSION} widgets module" 0115 URL "https://www.qt.io/download") 0116 # https://bugreports.qt.io/browse/QTBUG-114706 0117 add_library(Qt::Widgets ALIAS Qt${QT_MAJOR_VERSION}::Widgets) 0118 0119 # Designer Plugin 0120 find_package(Qt${QT_MAJOR_VERSION}Designer ${REQUIRED_QT_VERSION}) 0121 set_package_properties(Qt${QT_MAJOR_VERSION}Designer PROPERTIES 0122 TYPE RECOMMENDED 0123 DESCRIPTION "Needed to build the Qt Designer plugin" 0124 URL "https://www.qt.io/download") 0125 # https://bugreports.qt.io/browse/QTBUG-114706 0126 if(Qt${QT_MAJOR_VERSION}Xml_FOUND) 0127 add_library(Qt::Xml ALIAS Qt${QT_MAJOR_VERSION}::Xml) 0128 endif() 0129 0130 if(QT_MAJOR_VERSION STREQUAL "6") 0131 find_package(Qt6Core5Compat REQUIRED) 0132 # Qt6Designer links to OpenGLWidgets but doesnt find it 0133 find_package(Qt6OpenGLWidgets ${REQUIRED_QT_VERSION}) 0134 # https://bugreports.qt.io/browse/QTBUG-114706 0135 add_library(Qt::OpenGLWidgets ALIAS Qt6::OpenGLWidgets) 0136 endif() 0137 0138 set(BUILDSYSTEM_INSTALL_DIR ${CMAKE_INSTALL_FULL_DATAROOTDIR}/${PHONON_LIB_SONAME}/buildsystem/) 0139 add_definitions( 0140 -DQT_DISABLE_DEPRECATED_BEFORE=0x050F00 0141 -DQT_DEPRECATED_WARNINGS_SINCE=0x060000 0142 ) 0143 0144 if(Qt${QT_MAJOR_VERSION}Designer_FOUND AND PHONON_BUILD_DESIGNER_PLUGIN) 0145 add_subdirectory(designer designer${QT_MAJOR_VERSION}) 0146 endif() 0147 0148 add_subdirectory(includes includes${PHONON_LIB_SONAME}) 0149 add_subdirectory(phonon ${PHONON_LIB_SONAME}) 0150 0151 set(CMAKECONFIG_INSTALL_DIR "${KDE_INSTALL_CMAKEPACKAGEDIR}/${PHONON_LIB_SONAME}") 0152 0153 configure_package_config_file( 0154 PhononConfig.cmake.in 0155 ${PHONON_LIB_SONAME_CAMEL}Config.cmake 0156 PATH_VARS 0157 INCLUDE_INSTALL_DIR 0158 KDE_INSTALL_LIBDIR 0159 BUILDSYSTEM_INSTALL_DIR 0160 INSTALL_DESTINATION ${CMAKECONFIG_INSTALL_DIR} 0161 ) 0162 0163 install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${PHONON_LIB_SONAME_CAMEL}Config.cmake 0164 ${CMAKE_CURRENT_BINARY_DIR}/${PHONON_LIB_SONAME_CAMEL}ConfigVersion.cmake 0165 DESTINATION ${CMAKECONFIG_INSTALL_DIR} 0166 COMPONENT Devel) 0167 0168 install(EXPORT PhononLibs${QT_MAJOR_VERSION} 0169 DESTINATION ${CMAKECONFIG_INSTALL_DIR} 0170 NAMESPACE Phonon:: 0171 FILE PhononTargets.cmake) 0172 0173 if(PHONON_BUILD_EXPERIMENTAL) 0174 configure_package_config_file( 0175 PhononExperimentalConfig.cmake.in 0176 ${PHONON_LIB_SONAME_CAMEL}ExperimentalConfig.cmake 0177 PATH_VARS 0178 INCLUDE_INSTALL_DIR 0179 KDE_INSTALL_LIBDIR 0180 BUILDSYSTEM_INSTALL_DIR 0181 INSTALL_DESTINATION ${CMAKECONFIG_INSTALL_DIR} 0182 ) 0183 0184 install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${PHONON_LIB_SONAME_CAMEL}ExperimentalConfig.cmake 0185 ${CMAKE_CURRENT_BINARY_DIR}/${PHONON_LIB_SONAME_CAMEL}ExperimentalConfigVersion.cmake 0186 DESTINATION ${CMAKECONFIG_INSTALL_DIR} 0187 COMPONENT Devel 0188 ) 0189 0190 install(EXPORT PhononExperimentalLibs${QT_MAJOR_VERSION} 0191 DESTINATION ${CMAKECONFIG_INSTALL_DIR} 0192 NAMESPACE Phonon:: 0193 FILE PhononExperimentalTargets.cmake) 0194 endif() 0195 0196 ecm_generate_pkgconfig_file( 0197 BASE_NAME ${PHONON_LIB_SONAME} 0198 INCLUDE_INSTALL_DIR ${INCLUDE_INSTALL_DIR} 0199 DESCRIPTION "Phonon library needed to build applications" 0200 INSTALL 0201 ) 0202 0203 if(QT_MAJOR_VERSION VERSION_EQUAL 5) 0204 ecm_generate_pri_file( 0205 BASE_NAME ${PHONON_LIB_SONAME} 0206 LIB_NAME ${PHONON_LIB_SONAME} 0207 DEPS "core widgets" 0208 FILENAME_VAR pri_filename 0209 INCLUDE_INSTALL_DIR ${INCLUDE_INSTALL_DIR} 0210 ) 0211 install(FILES ${pri_filename} DESTINATION ${ECM_MKSPECS_INSTALL_DIR}) 0212 endif() 0213 0214 unset(QUERY_EXECUTABLE CACHE) 0215 endforeach() 0216 0217 if(PHONON_BUILD_DOC) 0218 add_subdirectory(doc) 0219 endif() 0220 0221 if(PHONON_BUILD_DEMOS) 0222 message(STATUS "Building demos.") 0223 # Demos may also be built standalone, so we need to skip their find_package call! 0224 set(CMAKE_DISABLE_FIND_PACKAGE_Phonon4Qt5 TRUE) 0225 add_subdirectory(demos) 0226 endif() 0227 0228 if(PHONON_BUILD_SETTINGS) 0229 add_subdirectory(settings) 0230 endif() 0231 0232 if(IS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/poqm") 0233 ecm_install_po_files_as_qm(poqm) 0234 endif() 0235 0236 feature_summary(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGES)