From 09b022305f3fd365d5d0424ff51982bcca5a572f Mon Sep 17 00:00:00 2001
From: Ahmad Fatoum <ahmad@a3f.at>
Date: Sun, 11 Feb 2018 11:59:36 +0100
Subject: [PATCH] mini_al: Support {Net,Open}BSD OSS

Fixes this build failure:
http://www.cpantesters.org/cpan/report/a069fade-0e1f-11e8-a1cf-bb670eaac09d
---
 src/external/mini_al.h | 6 +++++-
 utils.cmake            | 6 +++++-
 2 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/src/external/mini_al.h b/src/external/mini_al.h
index 358463857..c9ab40fa1 100644
--- a/src/external/mini_al.h
+++ b/src/external/mini_al.h
@@ -59,7 +59,7 @@
 //
 // Building (BSD)
 // --------------
-// The BSD build uses OSS and should Just Work without any linking nor include path configuration.
+// BSD build uses OSS. Requires linking to -lossaudio on {Open,Net}BSD, but not FreeBSD.
 //
 // Building (Emscripten)
 // ---------------------
@@ -6712,6 +6712,10 @@ static mal_result mal_device__main_loop__alsa(mal_device* pDevice)
 #include <fcntl.h>
 #include <sys/soundcard.h>
 
+#ifndef SNDCTL_DSP_HALT
+#define SNDCTL_DSP_HALT SNDCTL_DSP_RESET
+#endif
+
 int mal_open_temp_device__oss()
 {
     // The OSS sample code uses "/dev/mixer" as the device for getting system properties so I'm going to do the same.
diff --git a/utils.cmake b/utils.cmake
index 68fd1f767..dd4160d39 100644
--- a/utils.cmake
+++ b/utils.cmake
@@ -32,7 +32,11 @@ else()
     find_library(XCURSOR_LIBRARY Xcursor)
     include_directories(${OPENGL_INCLUDE_DIR})
 
-    set(LIBS_PRIVATE m ${pthread} ${OPENGL_LIBRARIES} ${X11_LIBRARIES} ${XRANDR_LIBRARY} ${XINERAMA_LIBRARY} ${XI_LIBRARY} ${XXF86VM_LIBRARY} ${XCURSOR_LIBRARY})
+    if ("${CMAKE_SYSTEM_NAME}" MATCHES "(Net|Open)BSD")
+      find_library(OSS_LIBRARY ossaudio)
+    endif()
+
+    set(LIBS_PRIVATE m ${pthread} ${OPENGL_LIBRARIES} ${X11_LIBRARIES} ${XRANDR_LIBRARY} ${XINERAMA_LIBRARY} ${XI_LIBRARY} ${XXF86VM_LIBRARY} ${XCURSOR_LIBRARY} ${OSS_LIBRARY})
   endif()
 endif()