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