From 1c87844856f7995bccc30c32567540be948f80da Mon Sep 17 00:00:00 2001
From: Rolf Eike Beer <eb@emlix.com>
Date: Mon, 28 May 2018 15:47:23 +0200
Subject: FindALSA: provide an imported target

---
 Help/release/dev/alsa-target.rst |  4 ++++
 Modules/FindALSA.cmake           | 14 ++++++++++++++
 2 files changed, 18 insertions(+)
 create mode 100644 Help/release/dev/alsa-target.rst

diff --git a/Help/release/dev/alsa-target.rst b/Help/release/dev/alsa-target.rst
new file mode 100644
index 0000000..e970580
--- /dev/null
+++ b/Help/release/dev/alsa-target.rst
@@ -0,0 +1,4 @@
+alsa-target
+-----------
+
+* The :module:`FindALSA` module now provides imported targets.
diff --git a/Modules/FindALSA.cmake b/Modules/FindALSA.cmake
index fa9a434..84b6ec5 100644
--- a/Modules/FindALSA.cmake
+++ b/Modules/FindALSA.cmake
@@ -9,6 +9,15 @@
 #
 # Find the alsa libraries (asound)
 #
+# IMPORTED Targets
+# ^^^^^^^^^^^^^^^^
+#
+# This module defines :prop_tgt:`IMPORTED` target ``ALSA::ALSA``, if
+# ALSA has been found.
+#
+# Result Variables
+# ^^^^^^^^^^^^^^^^
+#
 # ::
 #
 #   This module defines the following variables:
@@ -47,6 +56,11 @@ FIND_PACKAGE_HANDLE_STANDARD_ARGS(ALSA
 if(ALSA_FOUND)
   set( ALSA_LIBRARIES ${ALSA_LIBRARY} )
   set( ALSA_INCLUDE_DIRS ${ALSA_INCLUDE_DIR} )
+  if(NOT TARGET ALSA::ALSA)
+    add_library(ALSA::ALSA UNKNOWN IMPORTED)
+    set_target_properties(ALSA::ALSA PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${ALSA_INCLUDE_DIRS}")
+    set_property(TARGET ALSA::ALSA APPEND PROPERTY IMPORTED_LOCATION "${ALSA_LIBRARY}")
+  endif()
 endif()
 
 mark_as_advanced(ALSA_INCLUDE_DIR ALSA_LIBRARY)
-- 
cgit v0.12


From 6a64292fa722c15b8af63e3b0b4dcef5dbfacc8e Mon Sep 17 00:00:00 2001
From: Rolf Eike Beer <eb@emlix.com>
Date: Mon, 28 May 2018 15:52:08 +0200
Subject: FindALSA: reformat docs

---
 Modules/FindALSA.cmake | 25 ++++++++++++++++---------
 1 file changed, 16 insertions(+), 9 deletions(-)

diff --git a/Modules/FindALSA.cmake b/Modules/FindALSA.cmake
index 84b6ec5..c9cfd60 100644
--- a/Modules/FindALSA.cmake
+++ b/Modules/FindALSA.cmake
@@ -18,20 +18,27 @@
 # Result Variables
 # ^^^^^^^^^^^^^^^^
 #
-# ::
+# This module defines the following variables:
 #
-#   This module defines the following variables:
-#      ALSA_FOUND       - True if ALSA_INCLUDE_DIR & ALSA_LIBRARY are found
-#      ALSA_LIBRARIES   - Set when ALSA_LIBRARY is found
-#      ALSA_INCLUDE_DIRS - Set when ALSA_INCLUDE_DIR is found
+# ``ALSA_FOUND``
+#   True if ALSA_INCLUDE_DIR & ALSA_LIBRARY are found
 #
+# ``ALSA_LIBRARIES``
+#   List of libraries when using ALSA.
 #
+# ``ALSA_INCLUDE_DIRS``
+#   Where to find the ALSA headers.
 #
-# ::
+# Cache variables
+# ^^^^^^^^^^^^^^^
 #
-#      ALSA_INCLUDE_DIR - where to find asoundlib.h, etc.
-#      ALSA_LIBRARY     - the asound library
-#      ALSA_VERSION_STRING - the version of alsa found (since CMake 2.8.8)
+# The following cache variables may also be set:
+#
+# ``ALSA_INCLUDE_DIR``
+#   the ALSA include directory
+#
+# ``ALSA_LIBRARY``
+#   the absolute path of the asound library
 
 find_path(ALSA_INCLUDE_DIR NAMES alsa/asoundlib.h
           DOC "The ALSA (asound) include directory"
-- 
cgit v0.12


From 1c5b1ad4088fc98287448a68771ec2601174a392 Mon Sep 17 00:00:00 2001
From: Rolf Eike Beer <eike@sf-mail.de>
Date: Thu, 31 May 2018 09:35:00 +0200
Subject: FindALSA: add testcase

---
 Tests/CMakeLists.txt               |  4 ++++
 Tests/FindALSA/CMakeLists.txt      | 10 ++++++++++
 Tests/FindALSA/Test/CMakeLists.txt | 16 ++++++++++++++++
 Tests/FindALSA/Test/main.c         | 10 ++++++++++
 4 files changed, 40 insertions(+)
 create mode 100644 Tests/FindALSA/CMakeLists.txt
 create mode 100644 Tests/FindALSA/Test/CMakeLists.txt
 create mode 100644 Tests/FindALSA/Test/main.c

diff --git a/Tests/CMakeLists.txt b/Tests/CMakeLists.txt
index 0e94388..886e392 100644
--- a/Tests/CMakeLists.txt
+++ b/Tests/CMakeLists.txt
@@ -1368,6 +1368,10 @@ ${CMake_BINARY_DIR}/bin/cmake -DDIR=dev -P ${CMake_SOURCE_DIR}/Utilities/Release
     endif()
   endif()
 
+  if(CMake_TEST_FindALSA)
+    add_subdirectory(FindALSA)
+  endif()
+
   if(CMake_TEST_CUDA)
     add_subdirectory(Cuda)
     add_subdirectory(CudaOnly)
diff --git a/Tests/FindALSA/CMakeLists.txt b/Tests/FindALSA/CMakeLists.txt
new file mode 100644
index 0000000..891f7a4
--- /dev/null
+++ b/Tests/FindALSA/CMakeLists.txt
@@ -0,0 +1,10 @@
+add_test(NAME FindALSA.Test COMMAND
+  ${CMAKE_CTEST_COMMAND} -C $<CONFIGURATION>
+  --build-and-test
+  "${CMake_SOURCE_DIR}/Tests/FindALSA/Test"
+  "${CMake_BINARY_DIR}/Tests/FindALSA/Test"
+  ${build_generator_args}
+  --build-project TestFindALSA
+  --build-options ${build_options}
+  --test-command ${CMAKE_CTEST_COMMAND} -V -C $<CONFIGURATION>
+  )
diff --git a/Tests/FindALSA/Test/CMakeLists.txt b/Tests/FindALSA/Test/CMakeLists.txt
new file mode 100644
index 0000000..2829740
--- /dev/null
+++ b/Tests/FindALSA/Test/CMakeLists.txt
@@ -0,0 +1,16 @@
+cmake_minimum_required(VERSION 3.10)
+project(TestFindALSA C)
+include(CTest)
+
+find_package(ALSA REQUIRED)
+
+add_definitions(-DCMAKE_EXPECTED_ALSA_VERSION="${ALSA_VERSION_STRING}")
+
+add_executable(test_tgt main.c)
+target_link_libraries(test_tgt ALSA::ALSA)
+add_test(NAME test_tgt COMMAND test_tgt)
+
+add_executable(test_var main.c)
+target_include_directories(test_var PRIVATE ${ALSA_INCLUDE_DIRS})
+target_link_libraries(test_var PRIVATE ${ALSA_LIBRARIES})
+add_test(NAME test_var COMMAND test_var)
diff --git a/Tests/FindALSA/Test/main.c b/Tests/FindALSA/Test/main.c
new file mode 100644
index 0000000..d3303d0
--- /dev/null
+++ b/Tests/FindALSA/Test/main.c
@@ -0,0 +1,10 @@
+#include <alsa/global.h>
+#include <stdio.h>
+#include <string.h>
+
+int main()
+{
+  printf("Found ALSA version %s, expected version %s\n",
+         snd_asoundlib_version(), CMAKE_EXPECTED_ALSA_VERSION);
+  return strcmp(snd_asoundlib_version(), CMAKE_EXPECTED_ALSA_VERSION);
+}
-- 
cgit v0.12