[vlc-devel] commit: phonon: Allow building against kdesupport libphonon. ( Colin Guthrie )

git version control git at videolan.org
Mon Jan 25 09:31:50 CET 2010


vlc | branch: master | Colin Guthrie <cguthrie at mandriva.org> | Sun Jan 24 11:51:57 2010 +0000| [9ef1fb93b1246cd05c4b487ef255767b09e9aaa1] | committer: Jean-Baptiste Kempf 

phonon: Allow building against kdesupport libphonon.

This uses the FindPhonon.cmake file from kdelibs to find
the phonon package. Previously it would not build and gave a
somewhat confusing 'Undefined Interface' error when running moc
(cherry picked from commit 59ff91c95d5cb447c89bfdb8be02b518a136c7f6)

Signed-off-by: Jean-Baptiste Kempf <jb at videolan.org>

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=9ef1fb93b1246cd05c4b487ef255767b09e9aaa1
---

 bindings/phonon/CMakeLists.txt                 |    5 +-
 bindings/phonon/cmake/modules/FindPhonon.cmake |   71 ++++++++++++++++++++++++
 2 files changed, 74 insertions(+), 2 deletions(-)

diff --git a/bindings/phonon/CMakeLists.txt b/bindings/phonon/CMakeLists.txt
index ad5dcc7..a9f61a4 100644
--- a/bindings/phonon/CMakeLists.txt
+++ b/bindings/phonon/CMakeLists.txt
@@ -30,6 +30,7 @@ find_package(Automoc4 REQUIRED)
 include (CheckCXXCompilerFlag)
 include (MacroEnsureVersion)
 
+find_package(Phonon REQUIRED)
 find_package(VLC REQUIRED)
 if (NOT AUTOMOC4_VERSION)
    set(AUTOMOC4_VERSION "0.9.83")
@@ -161,7 +162,7 @@ if(MSVC)
 endif(MSVC)
 
 # for including config.h and for includes like <kparts/foo.h>
-include_directories(${QT_INCLUDES} ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/includes ${CMAKE_CURRENT_SOURCE_DIR}/phonon ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_BINARY_DIR}/phonon)
+include_directories(${QT_INCLUDES} ${PHONON_INCLUDES} ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/includes ${CMAKE_CURRENT_SOURCE_DIR}/phonon ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_BINARY_DIR}/phonon)
 
 macro(_SET_FANCY _var _value _comment)
    if (KDESupport_SOURCE_DIR)
@@ -222,7 +223,7 @@ if (CMAKE_SYSTEM_NAME MATCHES Linux)
    endif (CMAKE_C_COMPILER MATCHES "icc")
 endif (CMAKE_SYSTEM_NAME MATCHES Linux)
 
-set(PHONON_LIBS phonon ${QT_QTCORE_LIBRARY} ${QT_QTGUI_LIBRARY})
+list(APPEND PHONON_LIBS phonon ${QT_QTCORE_LIBRARY} ${QT_QTGUI_LIBRARY})
 if(QT_QTDBUS_FOUND)
     list(APPEND PHONON_LIBS phonon ${QT_QTDBUS_LIBRARY})
 endif(QT_QTDBUS_FOUND)
diff --git a/bindings/phonon/cmake/modules/FindPhonon.cmake b/bindings/phonon/cmake/modules/FindPhonon.cmake
new file mode 100644
index 0000000..daa457a
--- /dev/null
+++ b/bindings/phonon/cmake/modules/FindPhonon.cmake
@@ -0,0 +1,71 @@
+# Find libphonon
+# Once done this will define
+#
+#  PHONON_FOUND    - system has Phonon Library
+#  PHONON_INCLUDES - the Phonon include directory
+#  PHONON_LIBS     - link these to use Phonon
+#  PHONON_VERSION  - the version of the Phonon Library
+
+# Copyright (c) 2008, Matthias Kretz <kretz at kde.org>
+#
+# Redistribution and use is allowed according to the terms of the BSD license.
+# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
+
+macro(_phonon_find_version)
+   set(_phonon_namespace_header_file "${PHONON_INCLUDE_DIR}/phonon/phononnamespace.h")
+   if (APPLE AND EXISTS "${PHONON_INCLUDE_DIR}/Headers/phononnamespace.h")
+      set(_phonon_namespace_header_file "${PHONON_INCLUDE_DIR}/Headers/phononnamespace.h")
+   endif (APPLE AND EXISTS "${PHONON_INCLUDE_DIR}/Headers/phononnamespace.h")
+   file(READ ${_phonon_namespace_header_file} _phonon_header LIMIT 5000 OFFSET 1000)
+   string(REGEX MATCH "define PHONON_VERSION_STR \"(4\\.[0-9]+\\.[0-9a-z]+)\"" _phonon_version_match "${_phonon_header}")
+   set(PHONON_VERSION "${CMAKE_MATCH_1}")
+   message(STATUS "Phonon Version: ${PHONON_VERSION}")
+endmacro(_phonon_find_version)
+
+if(PHONON_FOUND)
+   # Already found, nothing more to do except figuring out the version
+   _phonon_find_version()
+else(PHONON_FOUND)
+   if(PHONON_INCLUDE_DIR AND PHONON_LIBRARY)
+      set(PHONON_FIND_QUIETLY TRUE)
+   endif(PHONON_INCLUDE_DIR AND PHONON_LIBRARY)
+
+   # As discussed on kde-buildsystem: first look at CMAKE_PREFIX_PATH, then at the suggested PATHS (kde4 install dir)
+   find_library(PHONON_LIBRARY NAMES phonon PATHS ${KDE4_LIB_INSTALL_DIR} ${QT_LIBRARY_DIR} NO_SYSTEM_ENVIRONMENT_PATH NO_CMAKE_SYSTEM_PATH)
+   # then at the default system locations (CMAKE_SYSTEM_PREFIX_PATH, i.e. /usr etc.)
+   find_library(PHONON_LIBRARY NAMES phonon)
+
+   find_path(PHONON_INCLUDE_DIR NAMES phonon/phonon_export.h PATHS ${KDE4_INCLUDE_INSTALL_DIR} ${QT_INCLUDE_DIR} ${INCLUDE_INSTALL_DIR} ${QT_LIBRARY_DIR} NO_SYSTEM_ENVIRONMENT_PATH NO_CMAKE_SYSTEM_PATH)
+   find_path(PHONON_INCLUDE_DIR NAMES phonon/phonon_export.h)
+
+   if(PHONON_INCLUDE_DIR AND PHONON_LIBRARY)
+      set(PHONON_LIBS ${phonon_LIB_DEPENDS} ${PHONON_LIBRARY})
+      set(PHONON_INCLUDES ${PHONON_INCLUDE_DIR}/KDE ${PHONON_INCLUDE_DIR})
+      set(PHONON_FOUND TRUE)
+      _phonon_find_version()
+   else(PHONON_INCLUDE_DIR AND PHONON_LIBRARY)
+      set(PHONON_FOUND FALSE)
+   endif(PHONON_INCLUDE_DIR AND PHONON_LIBRARY)
+
+   if(PHONON_FOUND)
+      if(NOT PHONON_FIND_QUIETLY)
+         message(STATUS "Found Phonon: ${PHONON_LIBRARY}")
+         message(STATUS "Found Phonon Includes: ${PHONON_INCLUDES}")
+      endif(NOT PHONON_FIND_QUIETLY)
+   else(PHONON_FOUND)
+      if(Phonon_FIND_REQUIRED)
+         if(NOT PHONON_INCLUDE_DIR)
+            message(STATUS "Phonon includes NOT found!")
+         endif(NOT PHONON_INCLUDE_DIR)
+         if(NOT PHONON_LIBRARY)
+            message(STATUS "Phonon library NOT found!")
+         endif(NOT PHONON_LIBRARY)
+         message(FATAL_ERROR "Phonon library or includes NOT found!")
+      else(Phonon_FIND_REQUIRED)
+         message(STATUS "Unable to find Phonon")
+      endif(Phonon_FIND_REQUIRED)
+   endif(PHONON_FOUND)
+
+
+   mark_as_advanced(PHONON_INCLUDE_DIR PHONON_LIBRARY PHONON_INCLUDES)
+endif(PHONON_FOUND)




More information about the vlc-devel mailing list