aboutsummaryrefslogtreecommitdiffstats
path: root/cmake/modules/FindSpeexDSP.cmake
blob: cd6ada0c42d213a304878fa60ae38ca908b03e51 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# Find the system's SpeexDSP includes and library
#
#  SPEEXDSP_INCLUDE_DIRS - where to find SpeexDSP headers
#  SPEEXDSP_LIBRARIES    - List of libraries when using SpeexDSP
#  SPEEXDSP_FOUND        - True if SpeexDSP found
#  SPEEXDSP_DLL_DIR      - (Windows) Path to the SpeexDSP DLL
#  SPEEXDSP_DLL          - (Windows) Name of the SpeexDSP DLL

include(FindWSWinLibs)
FindWSWinLibs("speexdsp-.*" "SPEEXDSP_HINTS")

if(NOT WIN32)
  find_package(PkgConfig)
  pkg_search_module(PC_SPEEXDSP speexdsp)
endif()


find_path(SPEEXDSP_INCLUDE_DIR
  NAMES
    speex/speex_resampler.h
  HINTS
    ${PC_SPEEXDSP_INCLUDE_DIRS}
    ${SPEEXDSP_HINTS}/include
)

find_library(SPEEXDSP_LIBRARY
  NAMES
    speexdsp
  HINTS
    ${PC_SPEEXDSP_LIBRARY_DIRS}
    ${SPEEXDSP_HINTS}/lib
)

include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(SpeexDSP DEFAULT_MSG SPEEXDSP_LIBRARY SPEEXDSP_INCLUDE_DIR)

if(SPEEXDSP_FOUND)
  set(SPEEXDSP_LIBRARIES ${SPEEXDSP_LIBRARY})
  set(SPEEXDSP_INCLUDE_DIRS ${SPEEXDSP_INCLUDE_DIR})
  if(WIN32)
    set(SPEEXDSP_DLL_DIR "${SPEEXDSP_HINTS}/bin"
      CACHE PATH "Path to SpeexDSP DLL"
    )
    file(GLOB _speexdsp_dll RELATIVE "${SPEEXDSP_DLL_DIR}"
      "${SPEEXDSP_DLL_DIR}/libspeexdsp.dll"
    )
    set(SPEEXDSP_DLL ${_speexdsp_dll}
      # We're storing filenames only. Should we use STRING instead?
      CACHE FILEPATH "SpeexDSP DLL file name"
    )
    mark_as_advanced(SPEEXDSP_DLL_DIR SPEEXDSP_DLL)
  endif()
else()
  set(SPEEXDSP_LIBRARIES)
  set(SPEEXDSP_INCLUDE_DIRS)
endif()

mark_as_advanced(SPEEXDSP_LIBRARIES SPEEXDSP_INCLUDE_DIRS)