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)