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)