1# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
2# file Copyright.txt or https://cmake.org/licensing for details.
3
4#[=======================================================================[.rst:
5FindALSA
6--------
7
8Find Advanced Linux Sound Architecture (ALSA)
9
10Find the alsa libraries (``asound``)
11
12IMPORTED Targets
13^^^^^^^^^^^^^^^^
14
15.. versionadded:: 3.12
16
17This module defines :prop_tgt:`IMPORTED` target ``ALSA::ALSA``, if
18ALSA has been found.
19
20Result Variables
21^^^^^^^^^^^^^^^^
22
23This module defines the following variables:
24
25``ALSA_FOUND``
26  True if ALSA_INCLUDE_DIR & ALSA_LIBRARY are found
27
28``ALSA_LIBRARIES``
29  List of libraries when using ALSA.
30
31``ALSA_INCLUDE_DIRS``
32  Where to find the ALSA headers.
33
34Cache variables
35^^^^^^^^^^^^^^^
36
37The following cache variables may also be set:
38
39``ALSA_INCLUDE_DIR``
40  the ALSA include directory
41
42``ALSA_LIBRARY``
43  the absolute path of the asound library
44#]=======================================================================]
45
46find_path(ALSA_INCLUDE_DIR NAMES alsa/asoundlib.h
47          DOC "The ALSA (asound) include directory"
48)
49
50find_library(ALSA_LIBRARY NAMES asound
51          DOC "The ALSA (asound) library"
52)
53
54if(ALSA_INCLUDE_DIR AND EXISTS "${ALSA_INCLUDE_DIR}/alsa/version.h")
55  file(STRINGS "${ALSA_INCLUDE_DIR}/alsa/version.h" alsa_version_str REGEX "^#define[\t ]+SND_LIB_VERSION_STR[\t ]+\".*\"")
56
57  string(REGEX REPLACE "^.*SND_LIB_VERSION_STR[\t ]+\"([^\"]*)\".*$" "\\1" ALSA_VERSION_STRING "${alsa_version_str}")
58  unset(alsa_version_str)
59endif()
60
61include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
62FIND_PACKAGE_HANDLE_STANDARD_ARGS(ALSA
63                                  REQUIRED_VARS ALSA_LIBRARY ALSA_INCLUDE_DIR
64                                  VERSION_VAR ALSA_VERSION_STRING)
65
66if(ALSA_FOUND)
67  set( ALSA_LIBRARIES ${ALSA_LIBRARY} )
68  set( ALSA_INCLUDE_DIRS ${ALSA_INCLUDE_DIR} )
69  if(NOT TARGET ALSA::ALSA)
70    add_library(ALSA::ALSA UNKNOWN IMPORTED)
71    set_target_properties(ALSA::ALSA PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${ALSA_INCLUDE_DIRS}")
72    set_property(TARGET ALSA::ALSA APPEND PROPERTY IMPORTED_LOCATION "${ALSA_LIBRARY}")
73  endif()
74endif()
75
76mark_as_advanced(ALSA_INCLUDE_DIR ALSA_LIBRARY)
77