blob: 627866a4d043a3fb9402b2021c4c0cc43900ef00 [file] [log] [blame]
Ryan Prichard7aea7e92022-01-13 17:30:17 -08001# 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)