e4355d0ee9313732df1feb5d0cba697f559bef6a
[quassel.git] / cmake / modules / FindPhonon.cmake
1 # Find libphonon
2 # Once done this will define
3 #
4 #  PHONON_FOUND    - system has Phonon Library
5 #  PHONON_INCLUDES - the Phonon include directory
6 #  PHONON_LIBS     - link these to use Phonon
7 #  PHONON_VERSION  - the version of the Phonon Library
8
9 # Copyright (c) 2008, Matthias Kretz <kretz@kde.org>
10 #
11 # Redistribution and use is allowed according to the terms of the BSD license.
12 # For details see the accompanying COPYING-CMAKE-SCRIPTS file.
13
14 macro(_phonon_find_version)
15    set(_phonon_namespace_header_file "${PHONON_INCLUDE_DIR}/phonon/phononnamespace.h")
16    if (APPLE AND EXISTS "${PHONON_INCLUDE_DIR}/Headers/phononnamespace.h")
17       set(_phonon_namespace_header_file "${PHONON_INCLUDE_DIR}/Headers/phononnamespace.h")
18    endif (APPLE AND EXISTS "${PHONON_INCLUDE_DIR}/Headers/phononnamespace.h")
19    file(READ ${_phonon_namespace_header_file} _phonon_header LIMIT 5000 OFFSET 1000)
20    string(REGEX MATCH "define PHONON_VERSION_STR \"(4\\.[0-9]+\\.[0-9a-z]+)\"" _phonon_version_match "${_phonon_header}")
21    set(PHONON_VERSION "${CMAKE_MATCH_1}")
22    message(STATUS "Phonon Version: ${PHONON_VERSION}")
23 endmacro(_phonon_find_version)
24
25 if(PHONON_FOUND)
26    # Already found, nothing more to do except figuring out the version
27    _phonon_find_version()
28 else(PHONON_FOUND)
29    if(PHONON_INCLUDE_DIR AND PHONON_LIBRARY)
30       set(PHONON_FIND_QUIETLY TRUE)
31    endif(PHONON_INCLUDE_DIR AND PHONON_LIBRARY)
32
33    # As discussed on kde-buildsystem: first look at CMAKE_PREFIX_PATH, then at the suggested PATHS (kde4 install dir)
34    find_library(PHONON_LIBRARY_RELEASE NAMES phonon phonon4 PATHS ${KDE4_LIB_INSTALL_DIR} ${QT_LIBRARY_DIR} NO_SYSTEM_ENVIRONMENT_PATH NO_CMAKE_SYSTEM_PATH)
35    find_library(PHONON_LIBRARY_DEBUG NAMES phonond phonond4 PATHS ${KD4_LIB_INSTALL} ${QT_LIBRARY_DIR} NO_SYSTEM_ENVIRONMENT_PATH NO_CMAKE_SYSTEM_PATH)
36    # then at the default system locations (CMAKE_SYSTEM_PREFIX_PATH, i.e. /usr etc.)
37    find_library(PHONON_LIBRARY_RELEASE NAMES phonon phonon4)
38    find_library(PHONON_LIBRARY_DEBUG NAMES phonond phonond4)
39
40    # if the release- as well as the debug-version of the library have been found:
41    IF (PHONON_LIBRARY_DEBUG AND PHONON_LIBRARY_RELEASE)
42      # if the generator supports configuration types then set
43      # optimized and debug libraries, or if the CMAKE_BUILD_TYPE has a value
44      IF (CMAKE_CONFIGURATION_TYPES OR CMAKE_BUILD_TYPE)
45        SET(PHONON_LIBRARY       optimized ${PHONON_LIBRARY_RELEASE} debug ${PHONON_LIBRARY_DEBUG})
46      ELSE(CMAKE_CONFIGURATION_TYPES OR CMAKE_BUILD_TYPE)
47        # if there are no configuration types and CMAKE_BUILD_TYPE has no value
48        # then just use the release libraries
49        SET(PHONON_LIBRARY       ${PHONON_LIBRARY_RELEASE} )
50      ENDIF(CMAKE_CONFIGURATION_TYPES OR CMAKE_BUILD_TYPE)
51    ELSE(PHONON_LIBRARY_DEBUG AND PHONON_LIBRARY_RELEASE)
52      IF (PHONON_LIBRARY_RELEASE)
53        SET(PHONON_LIBRARY ${PHONON_LIBRARY_RELEASE})
54      ENDIF (PHONON_LIBRARY_RELEASE)
55    ENDIF (PHONON_LIBRARY_DEBUG AND PHONON_LIBRARY_RELEASE)
56
57    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)
58    find_path(PHONON_INCLUDE_DIR NAMES phonon/phonon_export.h)
59
60    if(PHONON_INCLUDE_DIR AND PHONON_LIBRARY)
61       set(PHONON_LIBS ${phonon_LIB_DEPENDS} ${PHONON_LIBRARY})
62       set(PHONON_INCLUDES ${PHONON_INCLUDE_DIR}/KDE ${PHONON_INCLUDE_DIR})
63       set(PHONON_FOUND TRUE)
64       _phonon_find_version()
65    else(PHONON_INCLUDE_DIR AND PHONON_LIBRARY)
66       set(PHONON_FOUND FALSE)
67    endif(PHONON_INCLUDE_DIR AND PHONON_LIBRARY)
68
69    if(PHONON_FOUND)
70       if(NOT PHONON_FIND_QUIETLY)
71          message(STATUS "Found Phonon: ${PHONON_LIBRARY}")
72          message(STATUS "Found Phonon Includes: ${PHONON_INCLUDES}")
73       endif(NOT PHONON_FIND_QUIETLY)
74    else(PHONON_FOUND)
75       if(Phonon_FIND_REQUIRED)
76          if(NOT PHONON_INCLUDE_DIR)
77             message(STATUS "Phonon includes NOT found!")
78          endif(NOT PHONON_INCLUDE_DIR)
79          if(NOT PHONON_LIBRARY)
80             message(STATUS "Phonon library NOT found!")
81          endif(NOT PHONON_LIBRARY)
82          message(FATAL_ERROR "Phonon library or includes NOT found!")
83       else(Phonon_FIND_REQUIRED)
84          message(STATUS "Unable to find Phonon")
85       endif(Phonon_FIND_REQUIRED)
86    endif(PHONON_FOUND)
87
88
89    mark_as_advanced(PHONON_INCLUDE_DIR PHONON_LIBRARY PHONON_INCLUDES)
90 endif(PHONON_FOUND)