1# - Find OSS
2# Find OSS headers and libraries.
3#
4#  OSS_INCLUDE_DIR  - where to find soundcard.h, etc.
5#  OSS_LIBRARY      - link library, if any, needed for OSS.
6#  OSS_FOUND        - True if OSS found.
7
8INCLUDE(CheckIncludeFiles)
9INCLUDE(CheckCSourceCompiles)
10
11SET(OSS_LIBRARY "")
12SET(OSS_INCLUDE_DIR) # system header must suffice
13SET(OSS_FOUND)
14
15MESSAGE(STATUS "Looking for OSS...")
16
17#CHECK_INCLUDE_FILES(linux/soundcard.h HAVE_LINUX_SOUNDCARD_H) # Linux does provide <sys/soundcard.h>
18CHECK_INCLUDE_FILES(sys/soundcard.h HAVE_SYS_SOUNDCARD_H)
19CHECK_INCLUDE_FILES(machine/soundcard.h HAVE_MACHINE_SOUNDCARD_H)
20CHECK_INCLUDE_FILES(soundcard.h HAVE_SOUNDCARD_H) # less common, but exists.
21
22# NetBSD and OpenBSD uses ossaudio emulation layer,
23# otherwise no link library is needed.
24IF(CMAKE_SYSTEM_NAME MATCHES "kNetBSD.*|NetBSD.*|kOpenBSD.*|OpenBSD.*")  # AND HAVE_SOUNDCARD_H ???
25  FIND_LIBRARY(OSSAUDIO_LIBRARIES "ossaudio")
26  IF(OSSAUDIO_LIBRARIES STREQUAL "OSSAUDIO_LIBRARIES-NOTFOUND")
27    SET(OSSAUDIO_LIBRARIES)
28  ELSE()
29    MESSAGE(STATUS "Found libossaudio: ${OSSAUDIO_LIBRARIES}")
30    SET(OSS_LIBRARY ${OSSAUDIO_LIBRARIES})
31  ENDIF()
32ELSE()
33  SET(OSSAUDIO_LIBRARIES)
34ENDIF()
35
36SET(OLD_REQUIRED_LIBRARIES "${CMAKE_REQUIRED_LIBRARIES}")
37IF(OSSAUDIO_LIBRARIES)
38  SET(CMAKE_REQUIRED_LIBRARIES ${OSSAUDIO_LIBRARIES})
39ENDIF()
40
41IF(HAVE_SYS_SOUNDCARD_H)
42    CHECK_C_SOURCE_COMPILES("#include <sys/ioctl.h>
43                             #include <sys/soundcard.h>
44                             int main() {return SNDCTL_DSP_RESET;}" OSS_FOUND)
45ELSEIF(HAVE_MACHINE_SOUNDCARD_H)
46    CHECK_C_SOURCE_COMPILES("#include <sys/ioctl.h>
47                             #include <machine/soundcard.h>
48                             int main() {return SNDCTL_DSP_RESET;}" OSS_FOUND)
49ELSEIF(HAVE_SOUNDCARD_H)
50    CHECK_C_SOURCE_COMPILES("#include <sys/ioctl.h>
51                             #include <soundcard.h>
52                             int main() {return SNDCTL_DSP_RESET;}" OSS_FOUND)
53ENDIF()
54
55SET(CMAKE_REQUIRED_LIBRARIES "${OLD_REQUIRED_LIBRARIES}")
56
57MARK_AS_ADVANCED (
58	OSS_FOUND
59	OSS_INCLUDE_DIR
60	OSS_LIBRARY
61)
62
63IF(OSS_FOUND)
64    MESSAGE(STATUS "Found OSS.")
65ELSE()
66    MESSAGE(STATUS "Could not find OSS.")
67ENDIF()
68