diff --git a/CMakeLists.txt b/CMakeLists.txt --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -16,23 +16,16 @@ option(PHONON_NO_CAPTURE "Disable the capture capabilities") option(PHONON_NO_DBUS "Deactivate DBus support (used to expose AudioOutputs and for deprecated runtime backend switching)" OFF) -option(PHONON_BUILD_PHONON4QT5 "Build Phonon 4 transitional library for Qt5 (API compatible with regular Phonon4)" OFF) - # The following variables directly influence the library's soname version. # It is highly advised to think twice before changing those. # If you are unsure about the this: http://plan99.net/~mike/writing-shared-libraries.html set(PHONON_LIB_MAJOR_VERSION "4") # Only change on binary incompatible changes set(PHONON_LIB_MINOR_VERSION "10") # Only change on binary compatible changes with new interfaces set(PHONON_LIB_PATCH_VERSION "3") # Bump whenever you feel like it :P set(PHONON_LIB_VERSION "${PHONON_LIB_MAJOR_VERSION}.${PHONON_LIB_MINOR_VERSION}.${PHONON_LIB_PATCH_VERSION}") set(PHONON_LIB_SOVERSION ${PHONON_LIB_MAJOR_VERSION}) -set(PHONON_LIB_SONAME phonon) -set(PHONON_LIB_SONAME_CAMEL Phonon) - -if(PHONON_BUILD_PHONON4QT5) - set(PHONON_LIB_SONAME phonon4qt5) - set(PHONON_LIB_SONAME_CAMEL Phonon4Qt5) -endif(PHONON_BUILD_PHONON4QT5) +set(PHONON_LIB_SONAME phonon4qt5) +set(PHONON_LIB_SONAME_CAMEL Phonon4Qt5) if (PHONON_ASSERT_STATES) message(STATUS "Enabling backend state machine validation.") @@ -55,47 +48,35 @@ set(GL_DESC "Only recommended when bulding the super experimental QML support.") set(DECL_DESC "Only recommended when bulding the super experimental QML support.") -if (NOT PHONON_BUILD_PHONON4QT5) # Qt 4 - macro_log_feature(QT_QTDBUS_FOUND "Qt4 DBus" ${DBUS_DESC} "http://www.qt.gitorious.net/qt/qt" FALSE) - macro_log_feature(QT_QTDESIGNER_FOUND "Qt4 Designer" ${DESIGNER_DESC} "http://www.qt.gitorious.net/qt/qt" FALSE) - macro_log_feature(QT_QTOPENGL_FOUND "Qt4 OpenGL" ${GL_DESC} "http://www.qt.gitorious.net/qt/qt" FALSE) - macro_log_feature(QT_QTDECLARATIVE_FOUND "Qt4 Declarative" ${DECL_DESC} "http://www.qt.gitorious.net/qt/qt" FALSE) - set(PHONON_PKG_DEPENDENCIES "QtCore QtGui QtDBus") -else (NOT PHONON_BUILD_PHONON4QT5) # Qt 5 - # DBus Audio Output Introspection - find_package(Qt5DBus) - macro_log_feature(Qt5DBus_FOUND "Qt5 DBus (qtbase)" ${DBUS_DESC} "http://www.qt.gitorious.net/qt/qtbase" FALSE) - set(QT_QTDBUS_FOUND ${Qt5DBus_FOUND}) - - # Designer Plugin - find_package(Qt5Designer) - macro_log_feature(Qt5Designer_FOUND "Qt5 Designer (qttools)" ${DESIGNER_DESC} "http://www.qt.gitorious.net/qt/qttools" FALSE) - set(QT_QTDESIGNER_FOUND ${Qt5Designer_FOUND}) - - # VideoGraphicsObject GL Painting - find_package(Qt5OpenGL) - macro_log_feature(Qt5OpenGL_FOUND "Qt5 OpenGL (qtbase)" ${GL_DESC} "http://www.qt.gitorious.net/qt/qtbase" FALSE) - set(QT_QTOPENGL_FOUND ${Qt5OpenGL_FOUND}) - - # Declarative/QML1 - find_package(Qt5Declarative) - macro_log_feature(Qt5Declarative_FOUND "Qt5 Declarative (qtquick1)" ${DECL_DESC} "http://www.qt.gitorious.net/qt/qtquick1" FALSE) - set(QT_QTDECLARATIVE_FOUND ${Qt5Declarative_FOUND}) - - set(PHONON_PKG_DEPENDENCIES "Qt5Core Qt5Gui Qt5DBus") -endif (NOT PHONON_BUILD_PHONON4QT5) -################################################################################ +# DBus Audio Output Introspection +find_package(Qt5DBus) +macro_log_feature(Qt5DBus_FOUND "Qt5 DBus (qtbase)" ${DBUS_DESC} "http://www.qt.gitorious.net/qt/qtbase" FALSE) +set(QT_QTDBUS_FOUND ${Qt5DBus_FOUND}) + +# Designer Plugin +find_package(Qt5Designer) +macro_log_feature(Qt5Designer_FOUND "Qt5 Designer (qttools)" ${DESIGNER_DESC} "http://www.qt.gitorious.net/qt/qttools" FALSE) +set(QT_QTDESIGNER_FOUND ${Qt5Designer_FOUND}) + +# VideoGraphicsObject GL Painting +find_package(Qt5OpenGL) +macro_log_feature(Qt5OpenGL_FOUND "Qt5 OpenGL (qtbase)" ${GL_DESC} "http://www.qt.gitorious.net/qt/qtbase" FALSE) +set(QT_QTOPENGL_FOUND ${Qt5OpenGL_FOUND}) + +# Declarative/QML1 +find_package(Qt5Declarative) +macro_log_feature(Qt5Declarative_FOUND "Qt5 Declarative (qtquick1)" ${DECL_DESC} "http://www.qt.gitorious.net/qt/qtquick1" FALSE) +set(QT_QTDECLARATIVE_FOUND ${Qt5Declarative_FOUND}) + +set(PHONON_PKG_DEPENDENCIES "Qt5Core Qt5Gui Qt5DBus") if(NOT PHONON_BUILD_DECLARATIVE_PLUGIN OR NOT QT_QTOPENGL_FOUND OR NOT OPENGL_FOUND OR NOT QT_QTDECLARATIVE_FOUND) set(PHONON_NO_GRAPHICSVIEW true) else() set(PHONON_NO_GRAPHICSVIEW false) endif() -add_definitions(${QT_DEFINITIONS}) -remove_definitions(-DQT3_SUPPORT_WARNINGS -DQT3_SUPPORT) - -include_directories(${QT_INCLUDES} +include_directories( ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/includes ${CMAKE_CURRENT_SOURCE_DIR}/phonon @@ -134,15 +115,9 @@ # Please do note that these paths are most likely random nonensense depending on what OS and distribution is used, they most likely # need manual adjustment for the actual envrionment. - if(PHONON_BUILD_PHONON4QT5) - set(PHONON_QT_IMPORTS_INSTALL_DIR ${CMAKE_INSTALL_LIBDIR}/qt5/imports CACHE PATH "The directory where Phonon Qt imports (QML) will be installed to.") - set(PHONON_QT_MKSPECS_INSTALL_DIR share/qt5/mkspecs/modules CACHE PATH "The directory where Phonon mkspecs will be installed to.") - set(PHONON_QT_PLUGIN_INSTALL_DIR ${CMAKE_INSTALL_LIBDIR}/qt5/plugins/designer CACHE PATH "The directory where Phonon Qt plugins will be installed to." ) - else() - set(PHONON_QT_IMPORTS_INSTALL_DIR ${CMAKE_INSTALL_LIBDIR}/qt4/imports CACHE PATH "The directory where Phonon Qt imports (QML) will be installed to.") - set(PHONON_QT_MKSPECS_INSTALL_DIR share/qt4/mkspecs/modules CACHE PATH "The directory where Phonon mkspecs will be installed to.") - set(PHONON_QT_PLUGIN_INSTALL_DIR ${CMAKE_INSTALL_LIBDIR}/qt4/plugins/designer CACHE PATH "The directory where Phonon Qt plugins will be installed to." ) - endif() + set(PHONON_QT_IMPORTS_INSTALL_DIR ${CMAKE_INSTALL_LIBDIR}/qt5/imports CACHE PATH "The directory where Phonon Qt imports (QML) will be installed to.") + set(PHONON_QT_MKSPECS_INSTALL_DIR share/qt5/mkspecs/modules CACHE PATH "The directory where Phonon mkspecs will be installed to.") + set(PHONON_QT_PLUGIN_INSTALL_DIR ${CMAKE_INSTALL_LIBDIR}/qt5/plugins/designer CACHE PATH "The directory where Phonon Qt plugins will be installed to." ) endif(PHONON_INSTALL_QT_EXTENSIONS_INTO_SYSTEM_QT) @@ -290,13 +265,8 @@ FILE PhononExperimentalTargets.cmake ) endif() -if (NOT PHONON_BUILD_PHONON4QT5) - configure_file(${CMAKE_CURRENT_SOURCE_DIR}/qt_phonon.pri ${CMAKE_CURRENT_BINARY_DIR}/qt_${PHONON_LIB_SONAME}.pri @ONLY) - install(FILES ${CMAKE_CURRENT_BINARY_DIR}/qt_${PHONON_LIB_SONAME}.pri DESTINATION ${PHONON_QT_MKSPECS_INSTALL_DIR}) -else (NOT PHONON_BUILD_PHONON4QT5) - configure_file(${CMAKE_CURRENT_SOURCE_DIR}/qt5_phonon.pri ${CMAKE_CURRENT_BINARY_DIR}/qt_${PHONON_LIB_SONAME}.pri @ONLY) - install(FILES ${CMAKE_CURRENT_BINARY_DIR}/qt_${PHONON_LIB_SONAME}.pri DESTINATION ${PHONON_QT_MKSPECS_INSTALL_DIR}) -endif (NOT PHONON_BUILD_PHONON4QT5) +configure_file(${CMAKE_CURRENT_SOURCE_DIR}/qt_phonon.pri ${CMAKE_CURRENT_BINARY_DIR}/qt_${PHONON_LIB_SONAME}.pri @ONLY) +install(FILES ${CMAKE_CURRENT_BINARY_DIR}/qt_${PHONON_LIB_SONAME}.pri DESTINATION ${PHONON_QT_MKSPECS_INSTALL_DIR}) # This generates a nice library descriptor to use with [1]. It also spits out # a script that makes installing various versions for an ABI check a lot easier. diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -7,6 +7,5 @@ MacroOptionalFindPackage.cmake MacroPushRequiredVars.cmake PhononMacros.cmake - PhononQt4.cmake PhononQt5.cmake DESTINATION ${BUILDSYSTEM_INSTALL_DIR}) diff --git a/cmake/FindPhononInternal.cmake b/cmake/FindPhononInternal.cmake --- a/cmake/FindPhononInternal.cmake +++ b/cmake/FindPhononInternal.cmake @@ -101,11 +101,7 @@ set(CMAKE_INSTALL_NAME_DIR ${LIB_INSTALL_DIR}) endif(APPLE) -if (NOT PHONON_BUILD_PHONON4QT5) # Qt4 - include(${phonon_cmake_module_dir}/PhononQt4.cmake) -else (NOT PHONON_BUILD_PHONON4QT5) # Qt5 - include(${phonon_cmake_module_dir}/PhononQt5.cmake) -endif (NOT PHONON_BUILD_PHONON4QT5) +include(${phonon_cmake_module_dir}/PhononQt5.cmake) # - Automoc (using builtin introduced in 2.8.5) # NOTE: the compatiibility macros are actively used by the backends, so they diff --git a/cmake/PhononQt4.cmake b/cmake/PhononQt4.cmake deleted file mode 100644 --- a/cmake/PhononQt4.cmake +++ /dev/null @@ -1,400 +0,0 @@ -# Copyright (c) 2008, Matthias Kretz -# Copyright (c) 2010, Mark Kretschmann -# Copyright (c) 2010-2015, 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 copyright -# notice, this list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# 3. The name of the author may not be used to endorse or promote products -# derived from this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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. - -# RPATH Handling - -# Set up RPATH handling, so the libs are found if they are installed to a non-standard location. -# By default cmake builds the targets with full RPATH to everything in the build directory, -# but then removes the RPATH when installing. -# These two options below make it set the RPATH of the installed targets to all -# RPATH directories outside the current CMAKE_BINARY_DIR and also the library -# install directory. Alex -set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) -set(_abs_LIB_INSTALL_DIR "${LIB_INSTALL_DIR}") -if (NOT IS_ABSOLUTE "${_abs_LIB_INSTALL_DIR}") - set(_abs_LIB_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/${LIB_INSTALL_DIR}") -endif() -list(FIND CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES "${_abs_LIB_INSTALL_DIR}" _isSystemPlatformLibDir) -list(FIND CMAKE_CXX_IMPLICIT_LINK_DIRECTORIES "${_abs_LIB_INSTALL_DIR}" _isSystemCxxLibDir) -if("${_isSystemPlatformLibDir}" STREQUAL "-1" AND "${_isSystemCxxLibDir}" STREQUAL "-1") - set(CMAKE_INSTALL_RPATH "${_abs_LIB_INSTALL_DIR}") -endif("${_isSystemPlatformLibDir}" STREQUAL "-1" AND "${_isSystemCxxLibDir}" STREQUAL "-1") - -# Find Qt4 - -# Store CMAKE_MODULE_PATH and then append the current dir to it, so we are sure -# we get the FindQt4.cmake located next to us and not a different one. -# The original CMAKE_MODULE_PATH is restored later on. -set(_phonon_cmake_module_path_back ${CMAKE_MODULE_PATH}) -set(CMAKE_MODULE_PATH ${phonon_cmake_module_dir} ${CMAKE_MODULE_PATH} ) - -if (NOT QT_MIN_VERSION) - set(QT_MIN_VERSION "4.6.0") -endif (NOT QT_MIN_VERSION) -if (${QT_MIN_VERSION} VERSION_LESS "4.6.0") - set(QT_MIN_VERSION "4.6.0") -endif (${QT_MIN_VERSION} VERSION_LESS "4.6.0") - -find_package(Qt4) -macro_log_feature(QT4_FOUND "Qt4" "" "" TRUE) - -# ----- compat -macro (qt5_use_modules target) - set(_deps "") - foreach (arg ${ARGN}) - if (arg STREQUAL "Core") - list(APPEND _deps ${QT_QTCORE_LIBRARY}) - elseif (arg STREQUAL "Gui") - list(APPEND _deps ${QT_QTGUI_LIBRARY}) - elseif (arg STREQUAL "Widgets") - list(APPEND _deps ${QT_QTGUI_LIBRARY}) - elseif (arg STREQUAL "DBus") - list(APPEND _deps ${QT_QTDBUS_LIBRARY}) - elseif (arg STREQUAL "OpenGL") - list(APPEND _deps ${QT_QTOPENGL_LIBRARY}) - elseif (arg STREQUAL "Declarative") - list(APPEND _deps ${QT_QTDECLARATIVE_LIBRARY}) - elseif (arg STREQUAL "Designer") - list(APPEND _deps ${QT_QTDESIGNER_LIBRARY}) - else () - message("qt5_use_modules could not map ${arg} to Qt 4") - endif () - endforeach () - target_link_libraries(${target} ${_deps}) -endmacro (qt5_use_modules target args) - -macro (qt5_add_resources) - qt4_add_resources(${ARGN}) -endmacro (qt5_add_resources) - -macro (qt5_wrap_ui) - qt4_wrap_ui(${ARGN}) -endmacro () - - -# restore the original CMAKE_MODULE_PATH -set(CMAKE_MODULE_PATH ${_phonon_cmake_module_path_back}) - -# Imported from FindKDE4Internal.cmake -# Keep this portion copy'n'pastable for updatability. -# ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - -if (CMAKE_SYSTEM_NAME MATCHES Linux OR CMAKE_SYSTEM_NAME STREQUAL GNU) - if (CMAKE_COMPILER_IS_GNUCXX OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") - set ( _KDE4_PLATFORM_DEFINITIONS -D_XOPEN_SOURCE=500 -D_BSD_SOURCE -D_GNU_SOURCE) - set ( CMAKE_SHARED_LINKER_FLAGS "-Wl,--fatal-warnings -Wl,--no-undefined -lc ${CMAKE_SHARED_LINKER_FLAGS}") - set ( CMAKE_MODULE_LINKER_FLAGS "-Wl,--fatal-warnings -Wl,--no-undefined -lc ${CMAKE_MODULE_LINKER_FLAGS}") - - set ( CMAKE_SHARED_LINKER_FLAGS "-Wl,--enable-new-dtags ${CMAKE_SHARED_LINKER_FLAGS}") - set ( CMAKE_MODULE_LINKER_FLAGS "-Wl,--enable-new-dtags ${CMAKE_MODULE_LINKER_FLAGS}") - set ( CMAKE_EXE_LINKER_FLAGS "-Wl,--enable-new-dtags ${CMAKE_EXE_LINKER_FLAGS}") - - # we profile... - if(CMAKE_BUILD_TYPE_TOLOWER MATCHES profile) - set (CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -fprofile-arcs -ftest-coverage") - set (CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -fprofile-arcs -ftest-coverage") - endif(CMAKE_BUILD_TYPE_TOLOWER MATCHES profile) - endif (CMAKE_COMPILER_IS_GNUCXX OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") - if (CMAKE_C_COMPILER MATCHES "icc") - set ( _KDE4_PLATFORM_DEFINITIONS -D_XOPEN_SOURCE=500 -D_BSD_SOURCE -D_GNU_SOURCE) - set ( CMAKE_SHARED_LINKER_FLAGS "-Wl,--fatal-warnings -Wl,--no-undefined -lc ${CMAKE_SHARED_LINKER_FLAGS}") - set ( CMAKE_MODULE_LINKER_FLAGS "-Wl,--fatal-warnings -Wl,--no-undefined -lc ${CMAKE_MODULE_LINKER_FLAGS}") - endif (CMAKE_C_COMPILER MATCHES "icc") -endif (CMAKE_SYSTEM_NAME MATCHES Linux OR CMAKE_SYSTEM_NAME STREQUAL GNU) - -#------------------------------------------------------------------------------- - - -# Imported from FindKDE4Internal.cmake -# Keep this portion copy'n'pastable for updatability. -# ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - -# this macro is for internal use only. -macro(KDE_CHECK_FLAG_EXISTS FLAG VAR DOC) - if(NOT ${VAR} MATCHES "${FLAG}") - set(${VAR} "${${VAR}} ${FLAG}" CACHE STRING "Flags used by the linker during ${DOC} builds." FORCE) - endif(NOT ${VAR} MATCHES "${FLAG}") -endmacro(KDE_CHECK_FLAG_EXISTS FLAG VAR) - -if (MSVC) - set (KDE4_ENABLE_EXCEPTIONS -EHsc) - - # Qt disables the native wchar_t type, do it too to avoid linking issues - set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Zc:wchar_t-" ) - - # make sure that no header adds libcmt by default using #pragma comment(lib, "libcmt.lib") as done by mfc/afx.h - kde_check_flag_exists("/NODEFAULTLIB:libcmt /DEFAULTLIB:msvcrt" CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO "Release with Debug Info") - kde_check_flag_exists("/NODEFAULTLIB:libcmt /DEFAULTLIB:msvcrt" CMAKE_EXE_LINKER_FLAGS_RELEASE "release") - kde_check_flag_exists("/NODEFAULTLIB:libcmt /DEFAULTLIB:msvcrt" CMAKE_EXE_LINKER_FLAGS_MINSIZEREL "release minsize") - kde_check_flag_exists("/NODEFAULTLIB:libcmtd /DEFAULTLIB:msvcrtd" CMAKE_EXE_LINKER_FLAGS_DEBUG "debug") -endif(MSVC) - -# This macro is for internal use only -# Return the directories present in gcc's include path. -macro(_DETERMINE_GCC_SYSTEM_INCLUDE_DIRS _lang _result) - set(${_result}) - set(_gccOutput) - file(WRITE "${CMAKE_BINARY_DIR}/CMakeFiles/dummy" "\n" ) - execute_process(COMMAND ${CMAKE_C_COMPILER} -v -E -x ${_lang} -dD dummy - WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/CMakeFiles - ERROR_VARIABLE _gccOutput - OUTPUT_VARIABLE _gccStdout ) - file(REMOVE "${CMAKE_BINARY_DIR}/CMakeFiles/dummy") - - if( "${_gccOutput}" MATCHES "> search starts here[^\n]+\n *(.+) *\n *End of (search) list" ) - SET(${_result} ${CMAKE_MATCH_1}) - STRING(REPLACE "\n" " " ${_result} "${${_result}}") - SEPARATE_ARGUMENTS(${_result}) - ENDIF( "${_gccOutput}" MATCHES "> search starts here[^\n]+\n *(.+) *\n *End of (search) list" ) -ENDMACRO(_DETERMINE_GCC_SYSTEM_INCLUDE_DIRS _lang) - -if (CMAKE_COMPILER_IS_GNUCC OR CMAKE_C_COMPILER_ID MATCHES Clang) - _DETERMINE_GCC_SYSTEM_INCLUDE_DIRS(c _dirs) - set(CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES - ${CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES} ${_dirs}) -endif (CMAKE_COMPILER_IS_GNUCC OR CMAKE_C_COMPILER_ID MATCHES Clang) - -if (CMAKE_COMPILER_IS_GNUCXX) - _DETERMINE_GCC_SYSTEM_INCLUDE_DIRS(c++ _dirs) - set(CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES - ${CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES} ${_dirs}) - - set (KDE4_ENABLE_EXCEPTIONS "-fexceptions -UQT_NO_EXCEPTIONS") - # Select flags. - set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -g -DNDEBUG -DQT_NO_DEBUG") - set(CMAKE_CXX_FLAGS_RELEASE "-O2 -DNDEBUG -DQT_NO_DEBUG") - set(CMAKE_CXX_FLAGS_DEBUG "-g -O2 -fno-reorder-blocks -fno-schedule-insns -fno-inline") - set(CMAKE_CXX_FLAGS_DEBUGFULL "-g3 -fno-inline") - set(CMAKE_CXX_FLAGS_PROFILE "-g3 -fno-inline -ftest-coverage -fprofile-arcs") - set(CMAKE_C_FLAGS_RELWITHDEBINFO "-O2 -g -DNDEBUG -DQT_NO_DEBUG") - set(CMAKE_C_FLAGS_RELEASE "-O2 -DNDEBUG -DQT_NO_DEBUG") - set(CMAKE_C_FLAGS_DEBUG "-g -O2 -fno-reorder-blocks -fno-schedule-insns -fno-inline") - set(CMAKE_C_FLAGS_DEBUGFULL "-g3 -fno-inline") - set(CMAKE_C_FLAGS_PROFILE "-g3 -fno-inline -ftest-coverage -fprofile-arcs") - - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-long-long -std=iso9899:1990 -Wundef -Wcast-align -Werror-implicit-function-declaration -Wchar-subscripts -Wall -W -Wpointer-arith -Wwrite-strings -Wformat-security -Wmissing-format-attribute -fno-common") - # As of Qt 4.6.x we need to override the new exception macros if we want compile with -fno-exceptions - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wnon-virtual-dtor -Wno-long-long -Wundef -Wcast-align -Wchar-subscripts -Wall -W -Wpointer-arith -Wformat-security -fno-exceptions -DQT_NO_EXCEPTIONS -fno-check-new -fno-common") - - if (CMAKE_SYSTEM_NAME MATCHES Linux OR CMAKE_SYSTEM_NAME STREQUAL GNU) - # This should not be needed, as it is also part of _KDE4_PLATFORM_DEFINITIONS below. - # It is kept here nonetheless both for backwards compatibility in case one does not use add_definitions(${KDE4_DEFINITIONS}) - # and also because it is/was needed by glibc for snprintf to be available when building C files. - # See commit 4a44862b2d178c1d2e1eb4da90010d19a1e4a42c. - add_definitions (-D_BSD_SOURCE) - endif (CMAKE_SYSTEM_NAME MATCHES Linux OR CMAKE_SYSTEM_NAME STREQUAL GNU) - - if (CMAKE_SYSTEM_NAME STREQUAL GNU) - set (CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -pthread") - set (CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -pthread") - endif (CMAKE_SYSTEM_NAME STREQUAL GNU) - - # gcc under Windows - if (MINGW) - set (CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--export-all-symbols") - set (CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -Wl,--export-all-symbols") - endif (MINGW) - - check_cxx_compiler_flag(-fPIE HAVE_FPIE_SUPPORT) - if(KDE4_ENABLE_FPIE) - if(HAVE_FPIE_SUPPORT) - set (KDE4_CXX_FPIE_FLAGS "-fPIE") - set (KDE4_PIE_LDFLAGS "-pie") - else(HAVE_FPIE_SUPPORT) - message(STATUS "Your compiler doesn't support the PIE flag") - endif(HAVE_FPIE_SUPPORT) - endif(KDE4_ENABLE_FPIE) - - check_cxx_compiler_flag(-Woverloaded-virtual __KDE_HAVE_W_OVERLOADED_VIRTUAL) - if(__KDE_HAVE_W_OVERLOADED_VIRTUAL) - set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Woverloaded-virtual") - endif(__KDE_HAVE_W_OVERLOADED_VIRTUAL) - - # visibility support - check_cxx_compiler_flag(-fvisibility=hidden __KDE_HAVE_GCC_VISIBILITY) - set( __KDE_HAVE_GCC_VISIBILITY ${__KDE_HAVE_GCC_VISIBILITY} CACHE BOOL "GCC support for hidden visibility") - - # get the gcc version - exec_program(${CMAKE_C_COMPILER} ARGS ${CMAKE_C_COMPILER_ARG1} --version OUTPUT_VARIABLE _gcc_version_info) - - string (REGEX MATCH "[345]\\.[0-9]\\.[0-9]" _gcc_version "${_gcc_version_info}") - # gcc on mac just reports: "gcc (GCC) 3.3 20030304 ..." without the patch level, handle this here: - if (NOT _gcc_version) - string (REGEX MATCH ".*\\(GCC\\).* ([34]\\.[0-9]) .*" "\\1.0" _gcc_version "${gcc_on_macos}") - if (gcc_on_macos) - string (REGEX REPLACE ".*\\(GCC\\).* ([34]\\.[0-9]) .*" "\\1.0" _gcc_version "${_gcc_version_info}") - endif (gcc_on_macos) - endif (NOT _gcc_version) - - if (_gcc_version) - macro_ensure_version("4.1.0" "${_gcc_version}" GCC_IS_NEWER_THAN_4_1) - macro_ensure_version("4.2.0" "${_gcc_version}" GCC_IS_NEWER_THAN_4_2) - macro_ensure_version("4.3.0" "${_gcc_version}" GCC_IS_NEWER_THAN_4_3) - endif (_gcc_version) - - set(_GCC_COMPILED_WITH_BAD_ALLOCATOR FALSE) - if (GCC_IS_NEWER_THAN_4_1) - exec_program(${CMAKE_C_COMPILER} ARGS ${CMAKE_C_COMPILER_ARG1} -v OUTPUT_VARIABLE _gcc_alloc_info) - string(REGEX MATCH "(--enable-libstdcxx-allocator=mt)" _GCC_COMPILED_WITH_BAD_ALLOCATOR "${_gcc_alloc_info}") - endif (GCC_IS_NEWER_THAN_4_1) - - if (__KDE_HAVE_GCC_VISIBILITY AND GCC_IS_NEWER_THAN_4_1 AND NOT _GCC_COMPILED_WITH_BAD_ALLOCATOR AND NOT WIN32) - set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fvisibility=hidden") - set (KDE4_C_FLAGS "-fvisibility=hidden") - # check that Qt defines Q_DECL_EXPORT as __attribute__ ((visibility("default"))) - # if it doesn't and KDE compiles with hidden default visibiltiy plugins will break - set(_source "#include \n int main()\n {\n #ifndef QT_VISIBILITY_AVAILABLE \n #error QT_VISIBILITY_AVAILABLE is not available\n #endif \n }\n") - set(_source_file ${CMAKE_BINARY_DIR}/CMakeTmp/check_qt_visibility.cpp) - file(WRITE "${_source_file}" "${_source}") - set(_include_dirs "-DINCLUDE_DIRECTORIES:STRING=${QT_INCLUDES}") - - try_compile(_compile_result ${CMAKE_BINARY_DIR} ${_source_file} CMAKE_FLAGS "${_include_dirs}" OUTPUT_VARIABLE _compile_output_var) - - if(NOT _compile_result) - message("${_compile_output_var}") - message(FATAL_ERROR "Qt compiled without support for -fvisibility=hidden. This will break plugins and linking of some applications. Please fix your Qt installation (try passing --reduce-exports to configure).") - endif(NOT _compile_result) - - if (GCC_IS_NEWER_THAN_4_2) - set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror=return-type -fvisibility-inlines-hidden") - endif (GCC_IS_NEWER_THAN_4_2) - else (__KDE_HAVE_GCC_VISIBILITY AND GCC_IS_NEWER_THAN_4_1 AND NOT _GCC_COMPILED_WITH_BAD_ALLOCATOR AND NOT WIN32) - set (__KDE_HAVE_GCC_VISIBILITY 0) - endif (__KDE_HAVE_GCC_VISIBILITY AND GCC_IS_NEWER_THAN_4_1 AND NOT _GCC_COMPILED_WITH_BAD_ALLOCATOR AND NOT WIN32) - -endif (CMAKE_COMPILER_IS_GNUCXX) - - -if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang") - _DETERMINE_GCC_SYSTEM_INCLUDE_DIRS(c++ _dirs) - set(CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES - ${CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES} ${_dirs}) - - # Note that exceptions are enabled by default when building with clang. That - # is, -fno-exceptions is not set in CMAKE_CXX_FLAGS below. This is because a - # lot of code in different KDE modules ends up including code that throws - # exceptions. Most (or all) of the occurrences are in template code that - # never gets instantiated. Contrary to GCC, ICC and MSVC, clang (most likely - # rightfully) complains about that. Trying to work around the issue by - # passing -fdelayed-template-parsing brings other problems, as noted in - # http://lists.kde.org/?l=kde-core-devel&m=138157459706783&w=2. - # The generated code will be slightly bigger, but there is no way to avoid - # it. - set(KDE4_ENABLE_EXCEPTIONS "-fexceptions -UQT_NO_EXCEPTIONS") - - # Select flags. - set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -g -DNDEBUG -DQT_NO_DEBUG") - set(CMAKE_CXX_FLAGS_RELEASE "-O2 -DNDEBUG -DQT_NO_DEBUG") - set(CMAKE_CXX_FLAGS_DEBUG "-g -O2 -fno-inline") - set(CMAKE_CXX_FLAGS_DEBUGFULL "-g3 -fno-inline") - set(CMAKE_CXX_FLAGS_PROFILE "-g3 -fno-inline -ftest-coverage -fprofile-arcs") - set(CMAKE_C_FLAGS_RELWITHDEBINFO "-O2 -g -DNDEBUG -DQT_NO_DEBUG") - set(CMAKE_C_FLAGS_RELEASE "-O2 -DNDEBUG -DQT_NO_DEBUG") - set(CMAKE_C_FLAGS_DEBUG "-g -O2 -fno-inline") - set(CMAKE_C_FLAGS_DEBUGFULL "-g3 -fno-inline") - set(CMAKE_C_FLAGS_PROFILE "-g3 -fno-inline -ftest-coverage -fprofile-arcs") - - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-long-long -std=iso9899:1990 -Wundef -Wcast-align -Werror-implicit-function-declaration -Wchar-subscripts -Wall -W -Wpointer-arith -Wwrite-strings -Wformat-security -Wmissing-format-attribute -fno-common") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wnon-virtual-dtor -Wno-long-long -Wundef -Wcast-align -Wchar-subscripts -Wall -W -Wpointer-arith -Wformat-security -Woverloaded-virtual -fno-common -fvisibility=hidden -Werror=return-type -fvisibility-inlines-hidden") - set(KDE4_C_FLAGS "-fvisibility=hidden") - - # At least kdepim exports one function with C linkage that returns a - # QString in a plugin, but clang does not like that. - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-return-type-c-linkage") - - set(KDE4_CXX_FPIE_FLAGS "-fPIE") - set(KDE4_PIE_LDFLAGS "-pie") - - if (CMAKE_SYSTEM_NAME STREQUAL GNU) - set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -pthread") - set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -pthread") - endif (CMAKE_SYSTEM_NAME STREQUAL GNU) - - set(__KDE_HAVE_GCC_VISIBILITY TRUE) - - # check that Qt defines Q_DECL_EXPORT as __attribute__ ((visibility("default"))) - # if it doesn't and KDE compiles with hidden default visibiltiy plugins will break - set(_source "#include \n int main()\n {\n #ifndef QT_VISIBILITY_AVAILABLE \n #error QT_VISIBILITY_AVAILABLE is not available\n #endif \n }\n") - set(_source_file ${CMAKE_BINARY_DIR}/CMakeTmp/check_qt_visibility.cpp) - file(WRITE "${_source_file}" "${_source}") - set(_include_dirs "-DINCLUDE_DIRECTORIES:STRING=${QT_INCLUDES}") - try_compile(_compile_result ${CMAKE_BINARY_DIR} ${_source_file} CMAKE_FLAGS "${_include_dirs}" OUTPUT_VARIABLE _compile_output_var) - if(NOT _compile_result) - message("${_compile_output_var}") - message(FATAL_ERROR "Qt compiled without support for -fvisibility=hidden. This will break plugins and linking of some applications. Please fix your Qt installation (try passing --reduce-exports to configure).") - endif(NOT _compile_result) -endif (CMAKE_CXX_COMPILER_ID STREQUAL "Clang") - - -if (CMAKE_C_COMPILER MATCHES "icc") - - set (KDE4_ENABLE_EXCEPTIONS -fexceptions) - # Select flags. - set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -g") - set(CMAKE_CXX_FLAGS_RELEASE "-O2 -DNDEBUG -DQT_NO_DEBUG") - set(CMAKE_CXX_FLAGS_DEBUG "-O2 -g -fno-inline -noalign") - set(CMAKE_CXX_FLAGS_DEBUGFULL "-g -fno-inline -noalign") - set(CMAKE_C_FLAGS_RELWITHDEBINFO "-O2 -g") - set(CMAKE_C_FLAGS_RELEASE "-O2 -DNDEBUG -DQT_NO_DEBUG") - set(CMAKE_C_FLAGS_DEBUG "-O2 -g -fno-inline -noalign") - set(CMAKE_C_FLAGS_DEBUGFULL "-g -fno-inline -noalign") - - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -ansi -Wall -w1 -Wpointer-arith -fno-common") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ansi -Wall -w1 -Wpointer-arith -fno-exceptions -fno-common") - - # visibility support - set(__KDE_HAVE_ICC_VISIBILITY) -# check_cxx_compiler_flag(-fvisibility=hidden __KDE_HAVE_ICC_VISIBILITY) -# if (__KDE_HAVE_ICC_VISIBILITY) -# set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fvisibility=hidden") -# endif (__KDE_HAVE_ICC_VISIBILITY) - -endif (CMAKE_C_COMPILER MATCHES "icc") - -#------------------------------------------------------------------------------- - - -# Random Stuff - -if (CMAKE_COMPILER_IS_GNUCXX OR CMAKE_C_COMPILER MATCHES "icc") - set ( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wnon-virtual-dtor -Wno-long-long -ansi -Wundef -Wcast-align -Wchar-subscripts -Wall -W -Wpointer-arith -Wformat-security -fno-check-new -fno-common") -endif (CMAKE_COMPILER_IS_GNUCXX OR CMAKE_C_COMPILER MATCHES "icc") - -# For Windows -if(MSVC) - if(CMAKE_COMPILER_2005) - # to avoid a lot of deprecated warnings - add_definitions( -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE -D_SCL_SECURE_NO_WARNINGS ) - endif(CMAKE_COMPILER_2005) -endif(MSVC) - -# Uninstall Target -if (NOT _phonon_uninstall_target_created) - set(_phonon_uninstall_target_created TRUE) - configure_file("${phonon_cmake_module_dir}/cmake_uninstall.cmake.in" "${CMAKE_BINARY_DIR}/cmake_uninstall.cmake" @ONLY) - add_custom_target(uninstall "${CMAKE_COMMAND}" -P "${CMAKE_BINARY_DIR}/cmake_uninstall.cmake") -endif (NOT _phonon_uninstall_target_created) diff --git a/cmake/Qt4Macros.cmake b/cmake/Qt4Macros.cmake deleted file mode 100644 --- a/cmake/Qt4Macros.cmake +++ /dev/null @@ -1,414 +0,0 @@ -# This file is included by FindQt4.cmake, don't include it directly. - -#============================================================================= -# Copyright 2005-2009 Kitware, Inc. -# -# Distributed under the OSI-approved BSD License (the "License"); -# see accompanying file Copyright.txt for details. -# -# This software is distributed WITHOUT ANY WARRANTY; without even the -# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the License for more information. -#============================================================================= -# (To distributed this file outside of CMake, substitute the full -# License text for the above reference.) - - -###################################### -# -# Macros for building Qt files -# -###################################### - - -MACRO (QT4_EXTRACT_OPTIONS _qt4_files _qt4_options) - SET(${_qt4_files}) - SET(${_qt4_options}) - SET(_QT4_DOING_OPTIONS FALSE) - FOREACH(_currentArg ${ARGN}) - IF ("${_currentArg}" STREQUAL "OPTIONS") - SET(_QT4_DOING_OPTIONS TRUE) - ELSE ("${_currentArg}" STREQUAL "OPTIONS") - IF(_QT4_DOING_OPTIONS) - LIST(APPEND ${_qt4_options} "${_currentArg}") - ELSE(_QT4_DOING_OPTIONS) - LIST(APPEND ${_qt4_files} "${_currentArg}") - ENDIF(_QT4_DOING_OPTIONS) - ENDIF ("${_currentArg}" STREQUAL "OPTIONS") - ENDFOREACH(_currentArg) -ENDMACRO (QT4_EXTRACT_OPTIONS) - - -# macro used to create the names of output files preserving relative dirs -MACRO (QT4_MAKE_OUTPUT_FILE infile prefix ext outfile ) - STRING(LENGTH ${CMAKE_CURRENT_BINARY_DIR} _binlength) - STRING(LENGTH ${infile} _infileLength) - SET(_checkinfile ${CMAKE_CURRENT_SOURCE_DIR}) - IF(_infileLength GREATER _binlength) - STRING(SUBSTRING "${infile}" 0 ${_binlength} _checkinfile) - IF(_checkinfile STREQUAL "${CMAKE_CURRENT_BINARY_DIR}") - FILE(RELATIVE_PATH rel ${CMAKE_CURRENT_BINARY_DIR} ${infile}) - ELSE(_checkinfile STREQUAL "${CMAKE_CURRENT_BINARY_DIR}") - FILE(RELATIVE_PATH rel ${CMAKE_CURRENT_SOURCE_DIR} ${infile}) - ENDIF(_checkinfile STREQUAL "${CMAKE_CURRENT_BINARY_DIR}") - ELSE(_infileLength GREATER _binlength) - FILE(RELATIVE_PATH rel ${CMAKE_CURRENT_SOURCE_DIR} ${infile}) - ENDIF(_infileLength GREATER _binlength) - IF(WIN32 AND rel MATCHES "^[a-zA-Z]:") # absolute path - STRING(REGEX REPLACE "^([a-zA-Z]):(.*)$" "\\1_\\2" rel "${rel}") - ENDIF(WIN32 AND rel MATCHES "^[a-zA-Z]:") - SET(_outfile "${CMAKE_CURRENT_BINARY_DIR}/${rel}") - STRING(REPLACE ".." "__" _outfile ${_outfile}) - GET_FILENAME_COMPONENT(outpath ${_outfile} PATH) - GET_FILENAME_COMPONENT(_outfile ${_outfile} NAME_WE) - FILE(MAKE_DIRECTORY ${outpath}) - SET(${outfile} ${outpath}/${prefix}${_outfile}.${ext}) -ENDMACRO (QT4_MAKE_OUTPUT_FILE ) - - -MACRO (QT4_GET_MOC_FLAGS _moc_flags) - SET(${_moc_flags}) - GET_DIRECTORY_PROPERTY(_inc_DIRS INCLUDE_DIRECTORIES) - - FOREACH(_current ${_inc_DIRS}) - IF("${_current}" MATCHES ".framework/?$") - STRING(REGEX REPLACE "/[^/]+.framework" "" framework_path "${_current}") - SET(${_moc_flags} ${${_moc_flags}} "-F${framework_path}") - ELSE("${_current}" MATCHES ".framework/?$") - SET(${_moc_flags} ${${_moc_flags}} "-I${_current}") - ENDIF("${_current}" MATCHES ".framework/?$") - ENDFOREACH(_current ${_inc_DIRS}) - - GET_DIRECTORY_PROPERTY(_defines COMPILE_DEFINITIONS) - FOREACH(_current ${_defines}) - SET(${_moc_flags} ${${_moc_flags}} "-D${_current}") - ENDFOREACH(_current ${_defines}) - - IF(Q_WS_WIN) - SET(${_moc_flags} ${${_moc_flags}} -DWIN32) - ENDIF(Q_WS_WIN) - -ENDMACRO(QT4_GET_MOC_FLAGS) - - -# helper macro to set up a moc rule -MACRO (QT4_CREATE_MOC_COMMAND infile outfile moc_flags moc_options) - # For Windows, create a parameters file to work around command line length limit - IF (WIN32) - # Pass the parameters in a file. Set the working directory to - # be that containing the parameters file and reference it by - # just the file name. This is necessary because the moc tool on - # MinGW builds does not seem to handle spaces in the path to the - # file given with the @ syntax. - GET_FILENAME_COMPONENT(_moc_outfile_name "${outfile}" NAME) - GET_FILENAME_COMPONENT(_moc_outfile_dir "${outfile}" PATH) - IF(_moc_outfile_dir) - SET(_moc_working_dir WORKING_DIRECTORY ${_moc_outfile_dir}) - ENDIF(_moc_outfile_dir) - SET (_moc_parameters_file ${outfile}_parameters) - SET (_moc_parameters ${moc_flags} ${moc_options} -o "${outfile}" "${infile}") - FILE (REMOVE ${_moc_parameters_file}) - FOREACH(arg ${_moc_parameters}) - FILE (APPEND ${_moc_parameters_file} "${arg}\n") - ENDFOREACH(arg) - ADD_CUSTOM_COMMAND(OUTPUT ${outfile} - COMMAND ${QT_MOC_EXECUTABLE} @${_moc_outfile_name}_parameters - DEPENDS ${infile} - ${_moc_working_dir} - VERBATIM) - ELSE (WIN32) - ADD_CUSTOM_COMMAND(OUTPUT ${outfile} - COMMAND ${QT_MOC_EXECUTABLE} - ARGS ${moc_flags} ${moc_options} -o ${outfile} ${infile} - DEPENDS ${infile}) - ENDIF (WIN32) -ENDMACRO (QT4_CREATE_MOC_COMMAND) - - -MACRO (QT4_GENERATE_MOC infile outfile ) -# get include dirs and flags - QT4_GET_MOC_FLAGS(moc_flags) - GET_FILENAME_COMPONENT(abs_infile ${infile} ABSOLUTE) - QT4_CREATE_MOC_COMMAND(${abs_infile} ${outfile} "${moc_flags}" "") - SET_SOURCE_FILES_PROPERTIES(${outfile} PROPERTIES SKIP_AUTOMOC TRUE) # dont run automoc on this file - - MACRO_ADD_FILE_DEPENDENCIES(${abs_infile} ${outfile}) -ENDMACRO (QT4_GENERATE_MOC) - - -# QT4_WRAP_CPP(outfiles inputfile ... ) - -MACRO (QT4_WRAP_CPP outfiles ) - # get include dirs - QT4_GET_MOC_FLAGS(moc_flags) - QT4_EXTRACT_OPTIONS(moc_files moc_options ${ARGN}) - - FOREACH (it ${moc_files}) - GET_FILENAME_COMPONENT(it ${it} ABSOLUTE) - QT4_MAKE_OUTPUT_FILE(${it} moc_ cxx outfile) - QT4_CREATE_MOC_COMMAND(${it} ${outfile} "${moc_flags}" "${moc_options}") - SET(${outfiles} ${${outfiles}} ${outfile}) - ENDFOREACH(it) - -ENDMACRO (QT4_WRAP_CPP) - - -# QT4_WRAP_UI(outfiles inputfile ... ) - -MACRO (QT4_WRAP_UI outfiles ) - QT4_EXTRACT_OPTIONS(ui_files ui_options ${ARGN}) - - FOREACH (it ${ui_files}) - GET_FILENAME_COMPONENT(outfile ${it} NAME_WE) - GET_FILENAME_COMPONENT(infile ${it} ABSOLUTE) - SET(outfile ${CMAKE_CURRENT_BINARY_DIR}/ui_${outfile}.h) - ADD_CUSTOM_COMMAND(OUTPUT ${outfile} - COMMAND ${QT_UIC_EXECUTABLE} - ARGS ${ui_options} -o ${outfile} ${infile} - MAIN_DEPENDENCY ${infile}) - SET(${outfiles} ${${outfiles}} ${outfile}) - ENDFOREACH (it) - -ENDMACRO (QT4_WRAP_UI) - - -# QT4_ADD_RESOURCES(outfiles inputfile ... ) - -MACRO (QT4_ADD_RESOURCES outfiles ) - QT4_EXTRACT_OPTIONS(rcc_files rcc_options ${ARGN}) - - FOREACH (it ${rcc_files}) - GET_FILENAME_COMPONENT(outfilename ${it} NAME_WE) - GET_FILENAME_COMPONENT(infile ${it} ABSOLUTE) - GET_FILENAME_COMPONENT(rc_path ${infile} PATH) - SET(outfile ${CMAKE_CURRENT_BINARY_DIR}/qrc_${outfilename}.cxx) - # parse file for dependencies - # all files are absolute paths or relative to the location of the qrc file - FILE(READ "${infile}" _RC_FILE_CONTENTS) - STRING(REGEX MATCHALL "]*>" "" _RC_FILE "${_RC_FILE}") - STRING(REGEX MATCH "^/|([A-Za-z]:/)" _ABS_PATH_INDICATOR "${_RC_FILE}") - IF(NOT _ABS_PATH_INDICATOR) - SET(_RC_FILE "${rc_path}/${_RC_FILE}") - ENDIF(NOT _ABS_PATH_INDICATOR) - SET(_RC_DEPENDS ${_RC_DEPENDS} "${_RC_FILE}") - ENDFOREACH(_RC_FILE) - ADD_CUSTOM_COMMAND(OUTPUT ${outfile} - COMMAND ${QT_RCC_EXECUTABLE} - ARGS ${rcc_options} -name ${outfilename} -o ${outfile} ${infile} - MAIN_DEPENDENCY ${infile} - DEPENDS ${_RC_DEPENDS}) - SET(${outfiles} ${${outfiles}} ${outfile}) - ENDFOREACH (it) - -ENDMACRO (QT4_ADD_RESOURCES) - - -MACRO(QT4_ADD_DBUS_INTERFACE _sources _interface _basename) - GET_FILENAME_COMPONENT(_infile ${_interface} ABSOLUTE) - SET(_header ${CMAKE_CURRENT_BINARY_DIR}/${_basename}.h) - SET(_impl ${CMAKE_CURRENT_BINARY_DIR}/${_basename}.cpp) - SET(_moc ${CMAKE_CURRENT_BINARY_DIR}/${_basename}.moc) - - GET_SOURCE_FILE_PROPERTY(_nonamespace ${_interface} NO_NAMESPACE) - IF ( _nonamespace ) - SET(_params -N -m) - ELSE ( _nonamespace ) - SET(_params -m) - ENDIF ( _nonamespace ) - - GET_SOURCE_FILE_PROPERTY(_classname ${_interface} CLASSNAME) - IF ( _classname ) - SET(_params ${_params} -c ${_classname}) - ENDIF ( _classname ) - - GET_SOURCE_FILE_PROPERTY(_include ${_interface} INCLUDE) - IF ( _include ) - SET(_params ${_params} -i ${_include}) - ENDIF ( _include ) - - ADD_CUSTOM_COMMAND(OUTPUT ${_impl} ${_header} - COMMAND ${QT_DBUSXML2CPP_EXECUTABLE} ${_params} -p ${_basename} ${_infile} - DEPENDS ${_infile}) - - SET_SOURCE_FILES_PROPERTIES(${_impl} PROPERTIES SKIP_AUTOMOC TRUE) - - QT4_GENERATE_MOC(${_header} ${_moc}) - - SET(${_sources} ${${_sources}} ${_impl} ${_header} ${_moc}) - MACRO_ADD_FILE_DEPENDENCIES(${_impl} ${_moc}) - -ENDMACRO(QT4_ADD_DBUS_INTERFACE) - - -MACRO(QT4_ADD_DBUS_INTERFACES _sources) - FOREACH (_current_FILE ${ARGN}) - GET_FILENAME_COMPONENT(_infile ${_current_FILE} ABSOLUTE) - # get the part before the ".xml" suffix - STRING(REGEX REPLACE "(.*[/\\.])?([^\\.]+)\\.xml" "\\2" _basename ${_current_FILE}) - STRING(TOLOWER ${_basename} _basename) - QT4_ADD_DBUS_INTERFACE(${_sources} ${_infile} ${_basename}interface) - ENDFOREACH (_current_FILE) -ENDMACRO(QT4_ADD_DBUS_INTERFACES) - - -MACRO(QT4_GENERATE_DBUS_INTERFACE _header) # _customName OPTIONS -some -options ) - QT4_EXTRACT_OPTIONS(_customName _qt4_dbus_options ${ARGN}) - - GET_FILENAME_COMPONENT(_in_file ${_header} ABSOLUTE) - GET_FILENAME_COMPONENT(_basename ${_header} NAME_WE) - - IF (_customName) - SET(_target ${CMAKE_CURRENT_BINARY_DIR}/${_customName}) - ELSE (_customName) - SET(_target ${CMAKE_CURRENT_BINARY_DIR}/${_basename}.xml) - ENDIF (_customName) - - ADD_CUSTOM_COMMAND(OUTPUT ${_target} - COMMAND ${QT_DBUSCPP2XML_EXECUTABLE} ${_qt4_dbus_options} ${_in_file} -o ${_target} - DEPENDS ${_in_file} - ) -ENDMACRO(QT4_GENERATE_DBUS_INTERFACE) - - -MACRO(QT4_ADD_DBUS_ADAPTOR _sources _xml_file _include _parentClass) # _optionalBasename _optionalClassName) - GET_FILENAME_COMPONENT(_infile ${_xml_file} ABSOLUTE) - - SET(_optionalBasename "${ARGV4}") - IF (_optionalBasename) - SET(_basename ${_optionalBasename} ) - ELSE (_optionalBasename) - STRING(REGEX REPLACE "(.*[/\\.])?([^\\.]+)\\.xml" "\\2adaptor" _basename ${_infile}) - STRING(TOLOWER ${_basename} _basename) - ENDIF (_optionalBasename) - - SET(_optionalClassName "${ARGV5}") - SET(_header ${CMAKE_CURRENT_BINARY_DIR}/${_basename}.h) - SET(_impl ${CMAKE_CURRENT_BINARY_DIR}/${_basename}.cpp) - SET(_moc ${CMAKE_CURRENT_BINARY_DIR}/${_basename}.moc) - - IF(_optionalClassName) - ADD_CUSTOM_COMMAND(OUTPUT ${_impl} ${_header} - COMMAND ${QT_DBUSXML2CPP_EXECUTABLE} -m -a ${_basename} -c ${_optionalClassName} -i ${_include} -l ${_parentClass} ${_infile} - DEPENDS ${_infile} - ) - ELSE(_optionalClassName) - ADD_CUSTOM_COMMAND(OUTPUT ${_impl} ${_header} - COMMAND ${QT_DBUSXML2CPP_EXECUTABLE} -m -a ${_basename} -i ${_include} -l ${_parentClass} ${_infile} - DEPENDS ${_infile} - ) - ENDIF(_optionalClassName) - - QT4_GENERATE_MOC(${_header} ${_moc}) - SET_SOURCE_FILES_PROPERTIES(${_impl} PROPERTIES SKIP_AUTOMOC TRUE) - MACRO_ADD_FILE_DEPENDENCIES(${_impl} ${_moc}) - - SET(${_sources} ${${_sources}} ${_impl} ${_header} ${_moc}) -ENDMACRO(QT4_ADD_DBUS_ADAPTOR) - - -MACRO(QT4_AUTOMOC) - QT4_GET_MOC_FLAGS(_moc_INCS) - - SET(_matching_FILES ) - FOREACH (_current_FILE ${ARGN}) - - GET_FILENAME_COMPONENT(_abs_FILE ${_current_FILE} ABSOLUTE) - # if "SKIP_AUTOMOC" is set to true, we will not handle this file here. - # This is required to make uic work correctly: - # we need to add generated .cpp files to the sources (to compile them), - # but we cannot let automoc handle them, as the .cpp files don't exist yet when - # cmake is run for the very first time on them -> however the .cpp files might - # exist at a later run. at that time we need to skip them, so that we don't add two - # different rules for the same moc file - GET_SOURCE_FILE_PROPERTY(_skip ${_abs_FILE} SKIP_AUTOMOC) - - IF ( NOT _skip AND EXISTS ${_abs_FILE} ) - - FILE(READ ${_abs_FILE} _contents) - - GET_FILENAME_COMPONENT(_abs_PATH ${_abs_FILE} PATH) - - STRING(REGEX MATCHALL "# *include +[^ ]+\\.moc[\">]" _match "${_contents}") - IF(_match) - FOREACH (_current_MOC_INC ${_match}) - STRING(REGEX MATCH "[^ <\"]+\\.moc" _current_MOC "${_current_MOC_INC}") - - GET_FILENAME_COMPONENT(_basename ${_current_MOC} NAME_WE) - IF(EXISTS ${_abs_PATH}/${_basename}.hpp) - SET(_header ${_abs_PATH}/${_basename}.hpp) - ELSE(EXISTS ${_abs_PATH}/${_basename}.hpp) - SET(_header ${_abs_PATH}/${_basename}.h) - ENDIF(EXISTS ${_abs_PATH}/${_basename}.hpp) - SET(_moc ${CMAKE_CURRENT_BINARY_DIR}/${_current_MOC}) - QT4_CREATE_MOC_COMMAND(${_header} ${_moc} "${_moc_INCS}" "") - MACRO_ADD_FILE_DEPENDENCIES(${_abs_FILE} ${_moc}) - ENDFOREACH (_current_MOC_INC) - ENDIF(_match) - ENDIF ( NOT _skip AND EXISTS ${_abs_FILE} ) - ENDFOREACH (_current_FILE) -ENDMACRO(QT4_AUTOMOC) - - -MACRO(QT4_CREATE_TRANSLATION _qm_files) - QT4_EXTRACT_OPTIONS(_lupdate_files _lupdate_options ${ARGN}) - SET(_my_sources) - SET(_my_dirs) - SET(_my_tsfiles) - SET(_ts_pro) - FOREACH (_file ${_lupdate_files}) - GET_FILENAME_COMPONENT(_ext ${_file} EXT) - GET_FILENAME_COMPONENT(_abs_FILE ${_file} ABSOLUTE) - IF(_ext MATCHES "ts") - LIST(APPEND _my_tsfiles ${_abs_FILE}) - ELSE(_ext MATCHES "ts") - IF(NOT _ext) - LIST(APPEND _my_dirs ${_abs_FILE}) - ELSE(NOT _ext) - LIST(APPEND _my_sources ${_abs_FILE}) - ENDIF(NOT _ext) - ENDIF(_ext MATCHES "ts") - ENDFOREACH(_file) - FOREACH(_ts_file ${_my_tsfiles}) - IF(_my_sources) - # make a .pro file to call lupdate on, so we don't make our commands too - # long for some systems - GET_FILENAME_COMPONENT(_ts_name ${_ts_file} NAME_WE) - SET(_ts_pro ${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/${_ts_name}_lupdate.pro) - SET(_pro_srcs) - FOREACH(_pro_src ${_my_sources}) - SET(_pro_srcs "${_pro_srcs} \"${_pro_src}\"") - ENDFOREACH(_pro_src ${_my_sources}) - FILE(WRITE ${_ts_pro} "SOURCES = ${_pro_srcs}") - ENDIF(_my_sources) - ADD_CUSTOM_COMMAND(OUTPUT ${_ts_file} - COMMAND ${QT_LUPDATE_EXECUTABLE} - ARGS ${_lupdate_options} ${_ts_pro} ${_my_dirs} -ts ${_ts_file} - DEPENDS ${_my_sources} ${_ts_pro}) - ENDFOREACH(_ts_file) - QT4_ADD_TRANSLATION(${_qm_files} ${_my_tsfiles}) -ENDMACRO(QT4_CREATE_TRANSLATION) - - -MACRO(QT4_ADD_TRANSLATION _qm_files) - FOREACH (_current_FILE ${ARGN}) - GET_FILENAME_COMPONENT(_abs_FILE ${_current_FILE} ABSOLUTE) - GET_FILENAME_COMPONENT(qm ${_abs_FILE} NAME_WE) - GET_SOURCE_FILE_PROPERTY(output_location ${_abs_FILE} OUTPUT_LOCATION) - IF(output_location) - FILE(MAKE_DIRECTORY "${output_location}") - SET(qm "${output_location}/${qm}.qm") - ELSE(output_location) - SET(qm "${CMAKE_CURRENT_BINARY_DIR}/${qm}.qm") - ENDIF(output_location) - - ADD_CUSTOM_COMMAND(OUTPUT ${qm} - COMMAND ${QT_LRELEASE_EXECUTABLE} - ARGS ${_abs_FILE} -qm ${qm} - DEPENDS ${_abs_FILE} - ) - SET(${_qm_files} ${${_qm_files}} ${qm}) - ENDFOREACH (_current_FILE) -ENDMACRO(QT4_ADD_TRANSLATION) diff --git a/declarative/plugin.h b/declarative/plugin.h --- a/declarative/plugin.h +++ b/declarative/plugin.h @@ -69,9 +69,7 @@ class Plugin : public QDeclarativeExtensionPlugin { -#if QT_VERSION >= QT_VERSION_CHECK(5, 0, 0) Q_PLUGIN_METADATA(IID "org.kde.phonon.DeclarativePlugin") -#endif public: virtual void registerTypes(const char *uri); }; diff --git a/designer/phononcollection.cpp b/designer/phononcollection.cpp --- a/designer/phononcollection.cpp +++ b/designer/phononcollection.cpp @@ -71,9 +71,7 @@ class PhononCollection: public QObject, public QDesignerCustomWidgetCollectionInterface { Q_OBJECT -#if QT_VERSION >= QT_VERSION_CHECK(5, 0, 0) Q_PLUGIN_METADATA(IID "org.kde.phonon.PhononCollection") -#endif Q_INTERFACES(QDesignerCustomWidgetCollectionInterface) public: explicit PhononCollection(QObject *parent = 0); @@ -99,8 +97,4 @@ return m_plugins; } -#if QT_VERSION < QT_VERSION_CHECK(5, 0, 0) -Q_EXPORT_PLUGIN(PhononCollection) -#endif - #include "phononcollection.moc" diff --git a/phonon/CMakeLists.txt b/phonon/CMakeLists.txt --- a/phonon/CMakeLists.txt +++ b/phonon/CMakeLists.txt @@ -65,17 +65,6 @@ set(PULSEAUDIO_MAINLOOP_LIBRARY "") endif(GLIB2_FOUND AND PULSEAUDIO_FOUND) -if (PHONON_BUILD_PHONON4QT5) - message(WARNING "QZeitgeist has not been ported to Qt5, support is disabled.") -else () - macro_optional_find_package(QZeitgeist 0.8) - macro_log_feature(QZEITGEIST_FOUND "QZeitgeist" "Qt bindings for Zeitgeist" "http://projects.kde.org/kdesupport/libqzeitgeist/" FALSE "0.8") - if (QZEITGEIST_FOUND) - add_definitions(-DHAVE_QZEITGEIST) - include_directories(${QZEITGEIST_INCLUDE_DIR}) - endif(QZEITGEIST_FOUND) -endif() - include_directories(${CMAKE_BINARY_DIR}/includes/phonon) set(phonon_LIB_SRCS @@ -156,15 +145,6 @@ target_link_libraries(${PHONON_LIB_SONAME} ${OPENGL_gl_LIBRARY}) endif() -if (QZEITGEIST_FOUND) - target_link_libraries(${PHONON_LIB_SONAME} ${QZEITGEIST_LIBRARY}) -endif(QZEITGEIST_FOUND) - -if (${CMAKE_SYSTEM_NAME} MATCHES "SunOS") - # We need to explicitly link libm to phonon in Solaris - target_link_libraries(${PHONON_LIB_SONAME} m) -endif (${CMAKE_SYSTEM_NAME} MATCHES "SunOS") - set_target_properties(${PHONON_LIB_SONAME} PROPERTIES VERSION ${PHONON_LIB_VERSION} SOVERSION ${PHONON_LIB_SOVERSION} diff --git a/phonon/experimental/packetpool.cpp b/phonon/experimental/packetpool.cpp --- a/phonon/experimental/packetpool.cpp +++ b/phonon/experimental/packetpool.cpp @@ -27,11 +27,7 @@ int PacketPool::packetSize() const { return d_ptr->packetSize; } int PacketPool::poolSize() const { return d_ptr->poolSize; } -#if QT_VERSION >= QT_VERSION_CHECK(5, 0, 0) int PacketPool::unusedPackets() const { return d_ptr->ringBufferSize.loadAcquire(); } -#else -int PacketPool::unusedPackets() const { return d_ptr->ringBufferSize; } -#endif PacketPoolPrivate::PacketPoolPrivate(int _packetSize, int _poolSize) : freePackets(new PacketPrivate *[_poolSize]), @@ -48,11 +44,7 @@ PacketPoolPrivate::~PacketPoolPrivate() { -#if QT_VERSION >= QT_VERSION_CHECK(5, 0, 0) Q_ASSERT(poolSize == ringBufferSize.loadAcquire()); -#else - Q_ASSERT(poolSize == ringBufferSize); -#endif for (int i = 0; i < poolSize; ++i) { delete freePackets[i]; } diff --git a/phonon/factory.cpp b/phonon/factory.cpp --- a/phonon/factory.cpp +++ b/phonon/factory.cpp @@ -126,7 +126,6 @@ return false; } -#if QT_VERSION >= QT_VERSION_CHECK(5, 0, 0) struct BackendDescriptor { explicit BackendDescriptor(const QString &path) : isValid(false) @@ -223,16 +222,6 @@ } return false; } -#else // Qt 4 -bool FactoryPrivate::createSuitableBackend(const QString &libPath, const QList &plugins) -{ - foreach (const QString &plugin, plugins) { - if (tryCreateBackend(libPath + plugin)) - return true; - } - return false; -} -#endif // This entire function is so terrible to read I hope it implodes some day. bool FactoryPrivate::createBackend() diff --git a/phonon/globalstatic_p.h b/phonon/globalstatic_p.h --- a/phonon/globalstatic_p.h +++ b/phonon/globalstatic_p.h @@ -243,54 +243,6 @@ * * @ingroup KDEMacros */ -#if (QT_VERSION < QT_VERSION_CHECK(5, 0, 0)) // Qt 4 - - #define PHONON_GLOBAL_STATIC_WITH_ARGS(TYPE, NAME, ARGS) \ - static QBasicAtomicPointer _k_static_##NAME = Q_BASIC_ATOMIC_INITIALIZER(0); \ - static bool _k_static_##NAME##_destroyed; \ - static struct PHONON_GLOBAL_STATIC_STRUCT_NAME(NAME) \ - { \ - bool isDestroyed() \ - { \ - return _k_static_##NAME##_destroyed; \ - } \ - inline operator TYPE*() \ - { \ - return operator->(); \ - } \ - inline TYPE *operator->() \ - { \ - TYPE *p = _k_static_##NAME; \ - if (!p) { \ - if (isDestroyed()) { \ - qFatal("Fatal Error: Accessed global static '%s *%s()' after destruction. " \ - "Defined at %s:%d", #TYPE, #NAME, __FILE__, __LINE__); \ - } \ - p = new TYPE ARGS; \ - if (!_k_static_##NAME.testAndSetOrdered(0, p)) { \ - delete p; \ - p = _k_static_##NAME; \ - } else { \ - static Phonon::CleanUpGlobalStatic cleanUpObject = { destroy }; \ - } \ - } \ - return p; \ - } \ - inline TYPE &operator*() \ - { \ - return *operator->(); \ - } \ - static void destroy() \ - { \ - _k_static_##NAME##_destroyed = true; \ - TYPE *x = _k_static_##NAME; \ - _k_static_##NAME = 0; \ - delete x; \ - } \ - } NAME; - -#else // Qt 5 - #define PHONON_GLOBAL_STATIC_WITH_ARGS(TYPE, NAME, ARGS) \ static QBasicAtomicPointer _k_static_##NAME = Q_BASIC_ATOMIC_INITIALIZER(0); \ static bool _k_static_##NAME##_destroyed; \ @@ -338,6 +290,4 @@ } \ } NAME; -#endif // QT_VERSION < QT_VERSION_CHECK(5, 0, 0) - #endif // PHONON_GLOBALSTATIC_P_H diff --git a/phonon/mediaobject.h b/phonon/mediaobject.h --- a/phonon/mediaobject.h +++ b/phonon/mediaobject.h @@ -75,9 +75,6 @@ * } * \endcode * - * Some platforms support system-wide tracking of a user's activities. For - * instance, the zeitgeist project (http://zeitgeist-project.com) on Linux. - * * This integration is opt-in only and can be enabled by setting the * PlaybackTracking property to true: * \code diff --git a/phonon/mediaobject.cpp b/phonon/mediaobject.cpp --- a/phonon/mediaobject.cpp +++ b/phonon/mediaobject.cpp @@ -37,14 +37,6 @@ #include #include -#ifdef HAVE_QZEITGEIST -#include -#include -#include -#include -#include -#endif - #include "phononnamespace_p.h" #include "platform_p.h" #include "statesvalidator_p.h" @@ -278,9 +270,7 @@ d->playingQueuedSource = false; - d->sendToZeitgeist(StoppedState); INTERFACE_CALL(setSource(d->mediaSource)); - d->sendToZeitgeist(); } void MediaObject::clear() @@ -341,154 +331,6 @@ d->sourceQueue.clear(); } -void MediaObjectPrivate::sendToZeitgeist(const QString &event_interpretation, - const QString &event_manifestation, - const QString &event_actor, - const QDateTime &subject_timestamp, - const QUrl &subject_uri, - const QString &subject_text, - const QString &subject_interpretation, - const QString &subject_manifestation, - const QString &subject_mimetype) -{ -#ifdef HAVE_QZEITGEIST - QZeitgeist::DataModel::Subject subject; - QString url = subject_uri.toString(); - QString path = url.left(url.lastIndexOf(QLatin1Char('/'))); - subject.setUri(url); - subject.setText(subject_text); - subject.setInterpretation(subject_interpretation); - subject.setManifestation(subject_manifestation); - subject.setOrigin(path); - subject.setMimeType(subject_mimetype); - - QZeitgeist::DataModel::SubjectList subjects; - subjects << subject; - - QZeitgeist::DataModel::Event event; - event.setTimestamp(subject_timestamp); - event.setInterpretation(event_interpretation); - event.setManifestation(event_manifestation); - event.setActor(event_actor); - event.setSubjects(subjects); - - QZeitgeist::DataModel::EventList events; - events << event; - - QDBusPendingReply reply = - log->insertEvents(events); -#else - Q_UNUSED(event_interpretation) - Q_UNUSED(event_manifestation) - Q_UNUSED(event_actor) - Q_UNUSED(subject_timestamp) - Q_UNUSED(subject_uri) - Q_UNUSED(subject_text) - Q_UNUSED(subject_interpretation) - Q_UNUSED(subject_manifestation) - Q_UNUSED(subject_mimetype) -#endif -} - -void MediaObjectPrivate::sendToZeitgeist(State eventState) -{ -#ifdef HAVE_QZEITGEIST - P_Q(MediaObject); - if (readyForZeitgeist && q->property("PlaybackTracking").toBool()) { - pDebug() << "Current state:" << eventState; - QString eventInterpretation; - switch (eventState) { - case PlayingState: - eventInterpretation = QZeitgeist::Interpretation::Event::ZGAccessEvent; - break; - case ErrorState: - case StoppedState: - eventInterpretation = QZeitgeist::Interpretation::Event::ZGLeaveEvent; - break; - //These states are not signifigant events. - case LoadingState: - case BufferingState: - case PausedState: - return; - break; - } - - QStringList titles = q->metaData(TitleMetaData); - QStringList artists = q->metaData(ArtistMetaData); - QString title; - if (titles.empty()) { - QString file = mediaSource.url().toString(); - title = file.right(file.length()-file.lastIndexOf("/")-1); - } else { - if (artists.empty()) { - title = titles[0]; - } else { - title = QString(QObject::tr("%0 by %1")).arg(titles[0]).arg(artists[0]); - } - } - pDebug() << "Sending" << title << "to zeitgeist"; - - QString mime; - QString subjectInterpretation; - if (q->hasVideo()) { - subjectInterpretation = QZeitgeist::Interpretation::Subject::NFOVideo; - mime = "video/raw"; - } else { - subjectInterpretation = QZeitgeist::Interpretation::Subject::NFOAudio; - mime = "audio/raw"; - } - pDebug() << "Zeitgeist mime type:" << mime; - pDebug() << "Zeitgeist URL:" << mediaSource.url(); - pDebug() << "mediasource type:" << mediaSource.type(); - - QString subjectType; - switch (mediaSource.type()) { - case MediaSource::Empty: - case MediaSource::Invalid: - return; - case MediaSource::Url: - subjectType = QZeitgeist::Manifestation::Subject::NFORemoteDataObject; - break; - case MediaSource::CaptureDevice: - case MediaSource::Disc: - case MediaSource::Stream: - subjectType = QZeitgeist::Manifestation::Subject::NFOMediaStream; - break; - case MediaSource::LocalFile: - subjectType = QZeitgeist::Manifestation::Subject::NFOFileDataObject; - break; - } - - QString eventManifestation; - if (playingQueuedSource) - eventManifestation = QZeitgeist::Manifestation::Event::ZGScheduledActivity; - else - eventManifestation = QZeitgeist::Manifestation::Event::ZGUserActivity; - - sendToZeitgeist(eventInterpretation, - eventManifestation, - QLatin1Literal("application://" ) % Platform::applicationName() % QLatin1Literal(".desktop"), - QDateTime::currentDateTime(), - mediaSource.url(), - title, - subjectInterpretation, - subjectType, - mime); - } - // Unset this so we don't send it again after a pause+play - readyForZeitgeist = false; - playingQueuedSource = false; -#else - Q_UNUSED(eventState) -#endif -} - -void MediaObjectPrivate::sendToZeitgeist() -{ - P_Q(MediaObject); - sendToZeitgeist(q->state()); -} - bool MediaObjectPrivate::aboutToDeleteBackendObject() { //pDebug() << Q_FUNC_INFO; @@ -522,13 +364,6 @@ { P_Q(MediaObject); - // Zeitgeist --------------------------------------------------------------- - if (newstate == StoppedState) { - readyForZeitgeist = true; - } - pDebug() << "State changed from" << oldstate << "to" << newstate << "-> sending to zeitgeist."; - sendToZeitgeist(newstate); - // AbstractMediaStream fallback stuff -------------------------------------- if (errorOverride) { errorOverride = false; @@ -574,9 +409,7 @@ abstractStream->d_func()->setMediaObjectPrivate(this); MediaSource mediaSource(abstractStream); mediaSource.setAutoDelete(true); - sendToZeitgeist(StoppedState); pINTERFACE_CALL(setSource(mediaSource)); - sendToZeitgeist(); if (oldstate == Phonon::BufferingState) { q->play(); } @@ -615,7 +448,6 @@ } mediaSource = sourceQueue.head(); - readyForZeitgeist = false; playingQueuedSource = true; pINTERFACE_CALL(setNextSource(mediaSource)); @@ -719,16 +551,13 @@ // set up attributes if (isPlayable(mediaSource.type())) { - readyForZeitgeist = false; #ifndef QT_NO_PHONON_ABSTRACTMEDIASTREAM if (mediaSource.type() == MediaSource::Stream) { Q_ASSERT(mediaSource.stream()); mediaSource.stream()->d_func()->setMediaObjectPrivate(this); } #endif //QT_NO_PHONON_ABSTRACTMEDIASTREAM - sendToZeitgeist(StoppedState); pINTERFACE_CALL(setSource(mediaSource)); - sendToZeitgeist(); } } @@ -752,9 +581,6 @@ { metaData = newMetaData; emit q_func()->metaDataChanged(); - pDebug() << "Metadata ready, sending to zeitgeist"; - readyForZeitgeist = true; - sendToZeitgeist(); } void MediaObjectPrivate::phononObjectDestroyed(MediaNodePrivate *bp) diff --git a/phonon/mediaobject_p.h b/phonon/mediaobject_p.h --- a/phonon/mediaobject_p.h +++ b/phonon/mediaobject_p.h @@ -25,10 +25,6 @@ #include #include -#ifdef HAVE_QZEITGEIST -#include -#include -#endif #include "medianode_p.h" #include "medianodedestructionhandler_p.h" @@ -50,32 +46,6 @@ public: virtual QObject *qObject() override { return q_func(); } - /** - * Sends the metadata for this media file to the Zeitgeist tracker - * - * \param eventInterpretation The interpretation of the event - * \param eventManifestation The manifestation type of the event - * \param eventActor The application or entity responsible for emitting the zeitgeist event - * \param eventTimestamp The time - * \param subjectURI The file's URI - * \param subjectText A free-form annotation - * \param subjectInterpretation The interpretation type - * \param subjectManifestation The manifestation type - * \param subjectMimetype The file's mimetype - */ - void sendToZeitgeist(const QString &event_interpretation, - const QString &event_manifestation, - const QString &event_actor, - const QDateTime &subject_timestamp, - const QUrl &subject_uri, - const QString &subject_text, - const QString &subject_interpretation, - const QString &subject_manifestation, - const QString &subject_mimetype); - - void sendToZeitgeist(State); - void sendToZeitgeist(); - QList interfaceList; protected: virtual bool aboutToDeleteBackendObject() override; @@ -104,7 +74,6 @@ abstractStream(0), #endif //QT_NO_PHONON_ABSTRACTMEDIASTREAM state(Phonon::LoadingState), - readyForZeitgeist(false), playingQueuedSource(false) #ifndef QT_NO_PHONON_ABSTRACTMEDIASTREAM , errorType(Phonon::NormalError), @@ -115,16 +84,10 @@ validator(0) #endif //QT_NO_PHONON_ABSTRACTMEDIASTREAM { -#ifdef HAVE_QZEITGEIST - log = new QZeitgeist::Log(); -#endif } ~MediaObjectPrivate() { -#ifdef HAVE_QZEITGEIST - delete log; -#endif } qint64 currentTime; @@ -141,18 +104,14 @@ ; #else : 8; - bool readyForZeitgeist; bool playingQueuedSource; ErrorType errorType : 4; bool errorOverride : 1; bool ignoreLoadingToBufferingStateChange : 1; bool ignoreErrorToLoadingStateChange : 1; #endif //QT_NO_PHONON_ABSTRACTMEDIASTREAM MediaSource mediaSource; QQueue sourceQueue; -#ifdef HAVE_QZEITGEIST - QZeitgeist::Log *log; -#endif bool validateStates; StatesValidator *validator; }; diff --git a/phonon/objectdescription.h b/phonon/objectdescription.h --- a/phonon/objectdescription.h +++ b/phonon/objectdescription.h @@ -267,12 +267,8 @@ { dbg.nospace() << "\n{\n"; dbg.nospace() << " index: " << d.index() << "\n"; -#if QT_VERSION >= QT_VERSION_CHECK(5, 0, 0) const QList propertyNames = d.propertyNames(); for (const QByteArray &propertyName : propertyNames) { -#else - Q_FOREACH (const QByteArray &propertyName, d.propertyNames()) { -#endif dbg.nospace() << " " << propertyName << ": " << d.property(propertyName).toString() << "\n"; } diff --git a/phonon/objectdescriptionmodel.cpp b/phonon/objectdescriptionmodel.cpp --- a/phonon/objectdescriptionmodel.cpp +++ b/phonon/objectdescriptionmodel.cpp @@ -39,7 +39,6 @@ // ObjectDescriptionModel is a template class. Moc however cannot handle // templates so the solution done here is to *manually* do whatever moc does. -#if QT_VERSION >= QT_VERSION_CHECK(5, 0, 0) // Qt 5 static const uint qt_meta_data_Phonon__ObjectDescriptionModel[] = { // content: @@ -55,22 +54,7 @@ 0 // eod }; -#else // Qt 4 -static const uint qt_meta_data_Phonon__ObjectDescriptionModel[] = { - - // content: - 1, // revision - 0, // classname - 0, 0, // classinfo - 0, 0, // methods - 0, 0, // properties - 0, 0, // enums/sets - - 0 // eod -}; -#endif -#if QT_VERSION >= QT_VERSION_CHECK(5, 0, 0) // Qt 5 #define P_STATIC_META_STRINGDATA(name, string, stringlen, stringlenplustwo) \ struct qt_meta_stringdata_Phonon__ObjectDescriptionModel_##name##_t { QByteArrayData data[1]; char stringdata[stringlenplustwo]; }; \ static const qt_meta_stringdata_Phonon__ObjectDescriptionModel_##name##_t qt_meta_stringdata_Phonon__ObjectDescriptionModel_##name = { \ @@ -88,28 +72,12 @@ P_STATIC_META_STRINGDATA(SubtitleType, "Phonon::SubtitleModel\0", 21, 23) #undef P_STATIC_META_STRINGDATA -#else // Qt 4 - static const char qt_meta_stringdata_Phonon__ObjectDescriptionModel_AudioOutputDeviceType[] = { "Phonon::AudioOutputDevice\0" }; - static const char qt_meta_stringdata_Phonon__ObjectDescriptionModel_AudioCaptureDeviceType[] = { "Phonon::AudioCaptureDevice\0" }; - static const char qt_meta_stringdata_Phonon__ObjectDescriptionModel_VideoCaptureDeviceType[] = { "Phonon::VideoCaptureDevice\0" }; - static const char qt_meta_stringdata_Phonon__ObjectDescriptionModel_EffectType[] = { "Phonon::EffectDescription\0" }; - static const char qt_meta_stringdata_Phonon__ObjectDescriptionModel_AudioChannelType[] = { "Phonon::AudioChannelDescription\0" }; - static const char qt_meta_stringdata_Phonon__ObjectDescriptionModel_SubtitleType[] = { "Phonon::SubtitleDescription\0" }; -#endif -#if QT_VERSION >= QT_VERSION_CHECK(5, 0, 0) // Qt 5 #define OBJECT_DESCRIPTION_MODEL_STATIC_META_OBJECT(X) { \ &QAbstractListModel::staticMetaObject, \ qt_meta_stringdata_Phonon__ObjectDescriptionModel_##X.data, \ qt_meta_data_Phonon__ObjectDescriptionModel, \ 0, 0, 0 } -#else // Qt 4 - #define OBJECT_DESCRIPTION_MODEL_STATIC_META_OBJECT(X) { \ - &QAbstractListModel::staticMetaObject, \ - qt_meta_stringdata_Phonon__ObjectDescriptionModel_ ## X, \ - qt_meta_data_Phonon__ObjectDescriptionModel, \ - 0 } -#endif namespace Phonon { @@ -142,9 +110,7 @@ template void *ObjectDescriptionModel::qt_metacast(const char *_clname) { -#if QT_VERSION >= QT_VERSION_CHECK(5, 0, 0) // Qt 5 qWarning("WARNING: Phonon4Qt5 has not been verified to successfully qt_metacast ObjectDescriptionModels."); -#endif if (!_clname) { return 0; } diff --git a/phonon/platform.cpp b/phonon/platform.cpp --- a/phonon/platform.cpp +++ b/phonon/platform.cpp @@ -93,7 +93,6 @@ } } -#if QT_VERSION >= QT_VERSION_CHECK(4, 6, 0) // QIcon::fromTheme was introduced in 4.6.0. // Still no icon set. Use QIcon to access the platform theme. if (ret.isNull()) ret = QIcon::fromTheme(name); @@ -108,7 +107,6 @@ choppedName.resize(choppedName.lastIndexOf(QChar('-'))); ret = QIcon::fromTheme(choppedName); } -#endif return ret; } diff --git a/phonon/pulsesupport.cpp b/phonon/pulsesupport.cpp --- a/phonon/pulsesupport.cpp +++ b/phonon/pulsesupport.cpp @@ -1175,12 +1175,10 @@ qApp->applicationVersion().toUtf8()); if (!qApp->applicationName().isEmpty()) { QString icon; -#if QT_VERSION >= QT_VERSION_CHECK(4, 7, 0) if (!qApp->windowIcon().isNull()){ // Try to get the fromTheme() name of the QIcon. icon = qApp->windowIcon().name(); } -#endif if (icon.isEmpty()) { // If we failed to get a proper icon name, use the appname instead. icon = qApp->applicationName().toLower();