1 # CMake build file list for OpenAL
3 CMAKE_MINIMUM_REQUIRED(VERSION 2.4)
5 IF(COMMAND CMAKE_POLICY)
6 CMAKE_POLICY(SET CMP0003 NEW)
7 ENDIF(COMMAND CMAKE_POLICY)
9 SET(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake")
11 INCLUDE(CheckFunctionExists)
12 INCLUDE(CheckLibraryExists)
13 INCLUDE(CheckSharedLibraryExists)
14 INCLUDE(CheckIncludeFile)
15 INCLUDE(CheckIncludeFiles)
16 INCLUDE(CheckSymbolExists)
17 INCLUDE(CheckCCompilerFlag)
18 INCLUDE(CheckCSourceCompiles)
19 INCLUDE(CheckTypeSize)
25 SET(CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS TRUE)
28 OPTION(ALSA "Check for ALSA backend" ON)
29 OPTION(OSS "Check for OSS backend" ON)
30 OPTION(SOLARIS "Check for Solaris backend" ON)
31 OPTION(SNDIO "Check for SndIO backend" ON)
32 OPTION(MMDEVAPI "Check for MMDevApi" ON)
33 OPTION(DSOUND "Check for DirectSound backend" ON)
34 OPTION(WINMM "Check for Windows Multimedia backend" ON)
35 OPTION(PORTAUDIO "Check for PortAudio backend" ON)
36 OPTION(PULSEAUDIO "Check for PulseAudio backend" ON)
37 OPTION(COREAUDIO "Check for CoreAudio backend" ON)
38 OPTION(OPENSL "Check for OpenSL backend" ON)
39 OPTION(WAVE "Enable Wave Writer backend" ON)
41 OPTION(REQUIRE_ALSA "Require ALSA backend" OFF)
42 OPTION(REQUIRE_OSS "Require OSS backend" OFF)
43 OPTION(REQUIRE_SOLARIS "Require Solaris backend" OFF)
44 OPTION(REQUIRE_SNDIO "Require SndIO backend" OFF)
45 OPTION(REQUIRE_MMDEVAPI "Require MMDevApi" OFF)
46 OPTION(REQUIRE_DSOUND "Require DirectSound backend" OFF)
47 OPTION(REQUIRE_WINMM "Require Windows Multimedia backend" OFF)
48 OPTION(REQUIRE_PORTAUDIO "Require PortAudio backend" OFF)
49 OPTION(REQUIRE_PULSEAUDIO "Require PulseAudio backend" OFF)
50 OPTION(REQUIRE_COREAUDIO "Require CoreAudio backend" OFF)
51 OPTION(REQUIRE_OPENSL "Require OpenSL backend" OFF)
53 OPTION(DLOPEN "Check for the dlopen API for loading optional libs" ON)
55 OPTION(WERROR "Treat compile warnings as errors" OFF)
57 OPTION(UTILS "Build and install utility programs" ON)
59 OPTION(ALSOFT_CONFIG "Install alsoft.conf configuration file" OFF)
64 ADD_DEFINITIONS("-D_WIN32")
73 SET(LIB_MAJOR_VERSION "1")
74 SET(LIB_MINOR_VERSION "13")
75 SET(LIB_VERSION "${LIB_MAJOR_VERSION}.${LIB_MINOR_VERSION}")
80 CHECK_TYPE_SIZE("long" SIZEOF_LONG)
81 CHECK_TYPE_SIZE("long long" SIZEOF_LONG_LONG)
82 CHECK_TYPE_SIZE("unsigned int" SIZEOF_UINT)
83 CHECK_TYPE_SIZE("void*" SIZEOF_VOIDP)
86 CHECK_C_SOURCE_COMPILES("int *restrict foo;
87 int main() {return 0;}" HAVE_RESTRICT)
88 CHECK_C_SOURCE_COMPILES("int *__restrict foo;
89 int main() {return 0;}" HAVE___RESTRICT)
92 # Add definitions, compiler switches, etc.
93 INCLUDE_DIRECTORIES(OpenAL32/Include include "${OpenAL_BINARY_DIR}")
95 IF(NOT CMAKE_BUILD_TYPE)
96 SET(CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING
97 "Choose the type of build, options are: Debug Release RelWithDebInfo MinSizeRel."
100 IF(NOT CMAKE_DEBUG_POSTFIX)
101 SET(CMAKE_DEBUG_POSTFIX "" CACHE STRING
102 "Library postfix for debug builds. Normally left blank."
108 SET(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} -D_DEBUG")
109 SET(CMAKE_C_FLAGS_MINSIZEREL "${CMAKE_C_FLAGS_MINSIZEREL} -DNDEBUG")
110 SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -DNDEBUG")
111 SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -D_DEBUG")
112 ADD_DEFINITIONS(-D_CRT_SECURE_NO_WARNINGS)
113 ADD_DEFINITIONS(-D_CRT_NONSTDC_NO_DEPRECATE)
116 STRING(REGEX REPLACE "\\\\" "/" DXSDK_DIR "$ENV{DXSDK_DIR}")
118 STRING(REGEX REPLACE "\\\\" "/" DXSDK_DIR "${DXSDK_DIR}")
121 MESSAGE(STATUS "Using DirectX SDK directory: ${DXSDK_DIR}")
122 SET(CMAKE_REQUIRED_INCLUDES ${CMAKE_REQUIRED_INCLUDES} "${DXSDK_DIR}/Include")
123 INCLUDE_DIRECTORIES("${DXSDK_DIR}/Include")
124 LINK_DIRECTORIES("${DXSDK_DIR}/Lib")
127 OPTION(FORCE_STATIC_VCRT "Force /MT for static VC runtimes" OFF)
128 IF(FORCE_STATIC_VCRT)
130 CMAKE_C_FLAGS CMAKE_C_FLAGS_DEBUG CMAKE_C_FLAGS_RELEASE
131 CMAKE_C_FLAGS_MINSIZEREL CMAKE_C_FLAGS_RELWITHDEBINFO)
132 IF(${flag_var} MATCHES "/MD")
133 STRING(REGEX REPLACE "/MD" "/MT" ${flag_var} "${${flag_var}}")
138 ADD_DEFINITIONS(-Winline -Wall)
139 CHECK_C_COMPILER_FLAG(-Wextra HAVE_W_EXTRA)
141 ADD_DEFINITIONS(-Wextra)
145 ADD_DEFINITIONS(-Werror)
148 SET(CMAKE_C_FLAGS_RELWITHDEBINFO "-g -O2 -D_DEBUG" CACHE STRING
149 "Flags used by the compiler during Release with Debug Info builds."
151 SET(CMAKE_C_FLAGS_MINSIZEREL "-Os -DNDEBUG" CACHE STRING
152 "Flags used by the compiler during release minsize builds."
154 SET(CMAKE_C_FLAGS_RELEASE "-O2 -fomit-frame-pointer -DNDEBUG" CACHE STRING
155 "Flags used by the compiler during release builds"
157 SET(CMAKE_C_FLAGS_DEBUG "-g3 -D_DEBUG" CACHE STRING
158 "Flags used by the compiler during debug builds."
161 CHECK_C_SOURCE_COMPILES("int foo() __attribute__((destructor));
162 int main() {return 0;}" HAVE_GCC_DESTRUCTOR)
165 # Set visibility/export options if available
167 SET(EXPORT_DECL "__declspec(dllexport)")
169 OPTION(WINE "Enable use of Wine headers when compiling" ON)
171 FIND_PATH(WINE_INCLUDE_DIR library.h
174 /usr/local/include/wine)
176 MESSAGE(STATUS "Found Wine header files - ${WINE_INCLUDE_DIR}" )
177 INCLUDE_DIRECTORIES("${WINE_INCLUDE_DIR}/windows")
178 SET(CMAKE_REQUIRED_INCLUDES ${CMAKE_REQUIRED_INCLUDES} "${WINE_INCLUDE_DIR}/windows")
180 MESSAGE(STATUS "Could not find Wine header files" )
184 CHECK_C_COMPILER_FLAG(-fvisibility=internal HAVE_VISIBILITY_SWITCH)
185 CHECK_C_SOURCE_COMPILES("int foo() __attribute__((visibility(\"protected\")));
186 int main() {return 0;}" HAVE_GCC_VISIBILITY)
187 IF(HAVE_VISIBILITY_SWITCH AND HAVE_GCC_VISIBILITY)
188 ADD_DEFINITIONS(-fvisibility=internal)
189 SET(EXPORT_DECL "__attribute__((visibility(\"protected\")))")
193 CHECK_C_SOURCE_COMPILES("int foo(const char *str, ...) __attribute__((format(printf, 1, 2)));
194 int main() {return 0;}" HAVE_GCC_FORMAT)
196 CHECK_INCLUDE_FILE(fenv.h HAVE_FENV_H)
197 CHECK_INCLUDE_FILE(float.h HAVE_FLOAT_H)
198 CHECK_INCLUDE_FILE(guiddef.h HAVE_GUIDDEF_H)
199 IF(NOT HAVE_GUIDDEF_H)
200 CHECK_INCLUDE_FILE(initguid.h HAVE_INITGUID_H)
203 CHECK_LIBRARY_EXISTS(m powf "" HAVE_POWF)
204 CHECK_LIBRARY_EXISTS(m sqrtf "" HAVE_SQRTF)
205 CHECK_LIBRARY_EXISTS(m acosf "" HAVE_ACOSF)
206 CHECK_LIBRARY_EXISTS(m atanf "" HAVE_ATANF)
207 CHECK_LIBRARY_EXISTS(m fabsf "" HAVE_FABSF)
209 CHECK_LIBRARY_EXISTS(m fesetround "" HAVE_FESETROUND)
211 IF(HAVE_SQRTF OR HAVE_ACOSF OR HAVE_ATANF OR HAVE_FABSF OR HAVE_FESETROUND)
212 SET(EXTRA_LIBS m ${EXTRA_LIBS})
214 CHECK_FUNCTION_EXISTS(strtof HAVE_STRTOF)
215 CHECK_FUNCTION_EXISTS(_controlfp HAVE__CONTROLFP)
217 CHECK_FUNCTION_EXISTS(stat HAVE_STAT)
218 CHECK_FUNCTION_EXISTS(strcasecmp HAVE_STRCASECMP)
219 IF(NOT HAVE_STRCASECMP)
220 CHECK_FUNCTION_EXISTS(_stricmp HAVE__STRICMP)
221 IF(NOT HAVE__STRICMP)
222 MESSAGE(FATAL_ERROR "No case-insensitive compare function found, please report!")
225 ADD_DEFINITIONS(-Dstrcasecmp=_stricmp)
228 CHECK_FUNCTION_EXISTS(strncasecmp HAVE_STRNCASECMP)
229 IF(NOT HAVE_STRNCASECMP)
230 CHECK_FUNCTION_EXISTS(_strnicmp HAVE__STRNICMP)
231 IF(NOT HAVE__STRNICMP)
232 MESSAGE(FATAL_ERROR "No case-insensitive size-limitted compare function found, please report!")
235 ADD_DEFINITIONS(-Dstrncasecmp=_strnicmp)
238 CHECK_FUNCTION_EXISTS(snprintf HAVE_SNPRINTF)
239 IF(NOT HAVE_SNPRINTF)
240 CHECK_FUNCTION_EXISTS(_snprintf HAVE__SNPRINTF)
241 IF(NOT HAVE__SNPRINTF)
242 MESSAGE(FATAL_ERROR "No snprintf function found, please report!")
245 ADD_DEFINITIONS(-Dsnprintf=_snprintf)
248 CHECK_FUNCTION_EXISTS(vsnprintf HAVE_VSNPRINTF)
249 IF(NOT HAVE_VSNPRINTF)
250 CHECK_FUNCTION_EXISTS(_vsnprintf HAVE__VSNPRINTF)
251 IF(NOT HAVE__VSNPRINTF)
252 MESSAGE(FATAL_ERROR "No vsnprintf function found, please report!")
255 ADD_DEFINITIONS(-Dvsnprintf=_vsnprintf)
258 CHECK_SYMBOL_EXISTS(isnan math.h HAVE_ISNAN)
260 CHECK_FUNCTION_EXISTS(_isnan HAVE__ISNAN)
262 MESSAGE(FATAL_ERROR "No isnan function found, please report!")
265 ADD_DEFINITIONS(-Disnan=_isnan)
269 # Check for the dlopen API (for dynamicly loading backend libs)
271 CHECK_INCLUDE_FILE(dlfcn.h HAVE_DLFCN_H)
273 CHECK_LIBRARY_EXISTS(dl dlopen "" HAVE_LIBDL)
275 SET(EXTRA_LIBS dl ${EXTRA_LIBS})
280 # Check if we have Windows headers
281 CHECK_INCLUDE_FILE(windows.h HAVE_WINDOWS_H -D_WIN32_WINNT=0x0500)
282 IF(NOT HAVE_WINDOWS_H)
283 CHECK_FUNCTION_EXISTS(gettimeofday HAVE_GETTIMEOFDAY)
284 IF(NOT HAVE_GETTIMEOFDAY)
285 MESSAGE(FATAL_ERROR "No timing function found!")
288 CHECK_FUNCTION_EXISTS(nanosleep HAVE_NANOSLEEP)
289 IF(NOT HAVE_NANOSLEEP)
290 MESSAGE(FATAL_ERROR "No sleep function found!")
293 CHECK_C_COMPILER_FLAG(-pthread HAVE_PTHREAD)
295 ADD_DEFINITIONS(-pthread)
296 SET(EXTRA_LIBS ${EXTRA_LIBS} -pthread)
299 # We need pthreads outside of Windows
300 CHECK_INCLUDE_FILE(pthread.h HAVE_PTHREAD_H)
301 IF(NOT HAVE_PTHREAD_H)
302 MESSAGE(FATAL_ERROR "PThreads is required for non-Windows builds!")
304 # Some systems need pthread_np.h to get recursive mutexes
305 CHECK_INCLUDE_FILES("pthread.h;pthread_np.h" HAVE_PTHREAD_NP_H)
307 # _GNU_SOURCE is needed on some systems for extra attributes, and
308 # _REENTRANT is needed for libc thread-safety
309 ADD_DEFINITIONS(-D_GNU_SOURCE=1)
310 CHECK_LIBRARY_EXISTS(pthread pthread_create "" HAVE_LIBPTHREAD)
312 SET(EXTRA_LIBS pthread ${EXTRA_LIBS})
315 CHECK_LIBRARY_EXISTS(pthread pthread_setschedparam "" HAVE_PTHREAD_SETSCHEDPARAM)
317 CHECK_LIBRARY_EXISTS(rt clock_gettime "" HAVE_LIBRT)
319 SET(EXTRA_LIBS rt ${EXTRA_LIBS})
323 # Check for a 64-bit type
324 CHECK_INCLUDE_FILE(stdint.h HAVE_STDINT_H)
325 IF(NOT HAVE_STDINT_H)
327 CHECK_C_SOURCE_COMPILES("\#define _WIN32_WINNT 0x0500
328 \#include <windows.h>
330 int main() {return 0;}" HAVE___INT64)
333 IF(NOT SIZEOF_LONG MATCHES "8")
334 IF(NOT SIZEOF_LONG_LONG MATCHES "8")
335 MESSAGE(FATAL_ERROR "No 64-bit types found, please report!")
341 # Windows needs winmm for timeGetTime, even if the backend is disabled
342 CHECK_SHARED_LIBRARY_EXISTS(winmm timeGetTime 0 "" HAVE_LIBWINMM)
344 SET(EXTRA_LIBS winmm ${EXTRA_LIBS})
345 SET(PKG_CONFIG_LIBS ${PKG_CONFIG_LIBS} -lwinmm)
349 SET(OPENAL_OBJS OpenAL32/alAuxEffectSlot.c
353 OpenAL32/alExtension.c
355 OpenAL32/alListener.c
360 SET(ALC_OBJS Alc/ALc.c
384 SET(HAVE_PORTAUDIO 0)
385 SET(HAVE_PULSEAUDIO 0)
386 SET(HAVE_COREAUDIO 0)
392 CHECK_INCLUDE_FILE(alsa/asoundlib.h HAVE_ALSA_ASOUNDLIB_H)
393 IF(HAVE_ALSA_ASOUNDLIB_H)
394 CHECK_SHARED_LIBRARY_EXISTS(asound snd_pcm_open 4 "" HAVE_LIBASOUND)
395 IF(HAVE_LIBASOUND OR HAVE_DLFCN_H OR WIN32)
397 SET(ALC_OBJS ${ALC_OBJS} Alc/alsa.c)
398 IF(HAVE_DLFCN_H OR WIN32)
399 SET(BACKENDS "${BACKENDS} ALSA,")
401 SET(BACKENDS "${BACKENDS} ALSA \(linked\),")
402 SET(EXTRA_LIBS asound ${EXTRA_LIBS})
407 IF(REQUIRE_ALSA AND NOT HAVE_ALSA)
408 MESSAGE(FATAL_ERROR "Failed to enabled required ALSA backend")
413 CHECK_INCLUDE_FILE(sys/soundcard.h HAVE_SYS_SOUNDCARD_H)
414 IF(HAVE_SYS_SOUNDCARD_H)
416 SET(ALC_OBJS ${ALC_OBJS} Alc/oss.c)
417 SET(BACKENDS "${BACKENDS} OSS,")
420 IF(REQUIRE_OSS AND NOT HAVE_OSS)
421 MESSAGE(FATAL_ERROR "Failed to enabled required OSS backend")
424 # Check Solaris backend
426 CHECK_INCLUDE_FILE(sys/audioio.h HAVE_SYS_AUDIOIO_H)
427 IF(HAVE_SYS_AUDIOIO_H)
429 SET(ALC_OBJS ${ALC_OBJS} Alc/solaris.c)
430 SET(BACKENDS "${BACKENDS} Solaris,")
433 IF(REQUIRE_SOLARIS AND NOT HAVE_SOLARIS)
434 MESSAGE(FATAL_ERROR "Failed to enabled required Solaris backend")
437 # Check SndIO backend
439 CHECK_INCLUDE_FILE(sndio.h HAVE_SNDIO_H)
441 CHECK_SHARED_LIBRARY_EXISTS(sndio sio_open 3 "" HAVE_LIBSNDIO)
442 IF(HAVE_LIBSNDIO OR HAVE_DLFCN_H OR WIN32)
444 SET(ALC_OBJS ${ALC_OBJS} Alc/sndio.c)
445 IF(HAVE_DLFCN_H OR WIN32)
446 SET(BACKENDS "${BACKENDS} SndIO,")
448 SET(BACKENDS "${BACKENDS} SndIO \(linked\),")
449 SET(EXTRA_LIBS sndio ${EXTRA_LIBS})
454 IF(REQUIRE_SNDIO AND NOT HAVE_SNDIO)
455 MESSAGE(FATAL_ERROR "Failed to enabled required SndIO backend")
458 # Check for MMDevApi backend
461 CHECK_INCLUDE_FILE(mmdeviceapi.h HAVE_MMDEVICEAPI_H)
462 IF(HAVE_MMDEVICEAPI_H)
464 SET(ALC_OBJS ${ALC_OBJS} Alc/mmdevapi.c)
466 SET(BACKENDS "${BACKENDS} MMDevApi,")
470 IF(REQUIRE_MMDEVAPI AND NOT HAVE_MMDEVAPI)
471 MESSAGE(FATAL_ERROR "Failed to enabled required MMDevApi backend")
474 # Check DSound/MMSystem backend
476 CHECK_INCLUDE_FILE(dsound.h HAVE_DSOUND_H)
478 CHECK_SHARED_LIBRARY_EXISTS(dsound DirectSoundCreate 3 "" HAVE_LIBDSOUND)
479 IF(HAVE_LIBDSOUND OR HAVE_DLFCN_H OR WIN32)
481 SET(ALC_OBJS ${ALC_OBJS} Alc/dsound.c)
483 IF(HAVE_DLFCN_H OR WIN32)
484 SET(BACKENDS "${BACKENDS} DirectSound,")
486 SET(BACKENDS "${BACKENDS} DirectSound \(linked\),")
487 SET(EXTRA_LIBS dsound ${EXTRA_LIBS})
492 IF(REQUIRE_DSOUND AND NOT HAVE_DSOUND)
493 MESSAGE(FATAL_ERROR "Failed to enabled required DSound backend")
498 CHECK_INCLUDE_FILES("windows.h;mmsystem.h" HAVE_MMSYSTEM_H -D_WIN32_WINNT=0x0500)
499 IF(HAVE_MMSYSTEM_H AND HAVE_LIBWINMM)
501 SET(ALC_OBJS ${ALC_OBJS} Alc/winmm.c)
502 SET(BACKENDS "${BACKENDS} WinMM,")
506 IF(REQUIRE_WINMM AND NOT HAVE_WINMM)
507 MESSAGE(FATAL_ERROR "Failed to enabled required WinMM backend")
510 # Check PortAudio backend
512 CHECK_INCLUDE_FILE(portaudio.h HAVE_PORTAUDIO_H)
514 CHECK_SHARED_LIBRARY_EXISTS(portaudio Pa_Initialize 0 "" HAVE_LIBPORTAUDIO)
515 IF(HAVE_LIBPORTAUDIO OR HAVE_DLFCN_H OR WIN32)
516 SET(HAVE_PORTAUDIO 1)
517 SET(ALC_OBJS ${ALC_OBJS} Alc/portaudio.c)
518 IF(HAVE_DLFCN_H OR WIN32)
519 SET(BACKENDS "${BACKENDS} PortAudio,")
521 SET(BACKENDS "${BACKENDS} PortAudio \(linked\),")
522 SET(EXTRA_LIBS portaudio ${EXTRA_LIBS})
527 IF(REQUIRE_PORTAUDIO AND NOT HAVE_PORTAUDIO)
528 MESSAGE(FATAL_ERROR "Failed to enabled required PortAudio backend")
531 # Check PulseAudio backend
533 CHECK_INCLUDE_FILE(pulse/pulseaudio.h HAVE_PULSE_PULSEAUDIO_H)
534 IF(HAVE_PULSE_PULSEAUDIO_H)
535 CHECK_SHARED_LIBRARY_EXISTS(pulse pa_context_new 2 "" HAVE_LIBPULSE)
536 IF(HAVE_LIBPULSE OR HAVE_DLFCN_H OR WIN32)
537 SET(HAVE_PULSEAUDIO 1)
538 SET(ALC_OBJS ${ALC_OBJS} Alc/pulseaudio.c)
539 IF(HAVE_DLFCN_H OR WIN32)
540 SET(BACKENDS "${BACKENDS} PulseAudio,")
542 SET(BACKENDS "${BACKENDS} PulseAudio \(linked\),")
543 SET(EXTRA_LIBS pulse ${EXTRA_LIBS})
548 IF(REQUIRE_PULSEAUDIO AND NOT HAVE_PULSEAUDIO)
549 MESSAGE(FATAL_ERROR "Failed to enabled required PulseAudio backend")
552 # Check CoreAudio backend
554 CHECK_INCLUDE_FILE(/System/Library/Frameworks/CoreAudio.framework/Headers/CoreAudio.h HAVE_COREAUDIO_FRAMEWORK)
555 IF(HAVE_COREAUDIO_FRAMEWORK)
556 SET(HAVE_COREAUDIO 1)
557 SET(ALC_OBJS ${ALC_OBJS} Alc/coreaudio.c)
558 SET(BACKENDS "${BACKENDS} CoreAudio,")
559 SET(EXTRA_LIBS /System/Library/Frameworks/CoreAudio.framework ${EXTRA_LIBS})
560 SET(EXTRA_LIBS /System/Library/Frameworks/AudioUnit.framework ${EXTRA_LIBS})
561 SET(EXTRA_LIBS /System/Library/Frameworks/ApplicationServices.framework ${EXTRA_LIBS})
564 IF(REQUIRE_COREAUDIO AND NOT HAVE_COREAUDIO)
565 MESSAGE(FATAL_ERROR "Failed to enabled required CoreAudio backend")
568 # Check for OpenSL (Android) backend
570 CHECK_INCLUDE_FILE(SLES/OpenSLES_Android.h HAVE_SLES_OPENSLES_ANDROID_H)
571 IF(HAVE_SLES_OPENSLES_ANDROID_H)
572 CHECK_SHARED_LIBRARY_EXISTS(OpenSLES slCreateEngine 6 "" HAVE_LIBOPENSLES)
575 SET(ALC_OBJS ${ALC_OBJS} Alc/opensl.c)
576 SET(BACKENDS "${BACKENDS} OpenSL,")
577 SET(EXTRA_LIBS OpenSLES ${EXTRA_LIBS})
581 IF(REQUIRE_OPENSL AND NOT HAVE_OPENSL)
582 MESSAGE(FATAL_ERROR "Failed to enabled required OpenSL backend")
585 # Optionally enable the Wave Writer backend
588 SET(ALC_OBJS ${ALC_OBJS} Alc/wave.c)
589 SET(BACKENDS "${BACKENDS} WaveFile,")
592 # This is always available
593 SET(BACKENDS "${BACKENDS} Null")
595 IF(LIBTYPE STREQUAL "STATIC")
596 ADD_DEFINITIONS(-DAL_LIBTYPE_STATIC)
597 SET(PKG_CONFIG_CFLAGS -DAL_LIBTYPE_STATIC ${PKG_CONFIG_CFLAGS})
600 # Needed for openal.pc.in
601 SET(prefix ${CMAKE_INSTALL_PREFIX})
602 SET(exec_prefix "\${prefix}")
603 SET(libdir "\${exec_prefix}/lib${LIB_SUFFIX}")
604 SET(bindir "\${exec_prefix}/bin")
605 SET(includedir "\${prefix}/include")
606 SET(PACKAGE_VERSION "${LIB_VERSION}")
610 "${OpenAL_SOURCE_DIR}/config.h.in"
611 "${OpenAL_BINARY_DIR}/config.h")
613 "${OpenAL_SOURCE_DIR}/openal.pc.in"
614 "${OpenAL_BINARY_DIR}/openal.pc"
618 ADD_LIBRARY(${LIBNAME} ${LIBTYPE} ${OPENAL_OBJS} ${ALC_OBJS})
619 SET_TARGET_PROPERTIES(${LIBNAME} PROPERTIES DEFINE_SYMBOL AL_BUILD_LIBRARY
620 COMPILE_FLAGS -DAL_ALEXT_PROTOTYPES
621 VERSION ${LIB_VERSION}.0
622 SOVERSION ${LIB_MAJOR_VERSION})
623 IF(WIN32 AND NOT LIBTYPE STREQUAL "STATIC")
624 SET_TARGET_PROPERTIES(${LIBNAME} PROPERTIES PREFIX "")
627 TARGET_LINK_LIBRARIES(${LIBNAME} ${EXTRA_LIBS})
629 # Add an install target here
630 INSTALL(TARGETS ${LIBNAME}
631 RUNTIME DESTINATION bin
632 LIBRARY DESTINATION "lib${LIB_SUFFIX}"
633 ARCHIVE DESTINATION "lib${LIB_SUFFIX}"
635 INSTALL(FILES include/AL/al.h
639 include/AL/efx-creative.h
640 DESTINATION include/AL
642 INSTALL(FILES "${OpenAL_BINARY_DIR}/openal.pc"
643 DESTINATION "lib${LIB_SUFFIX}/pkgconfig")
647 MESSAGE(STATUS "Building OpenAL with support for the following backends:")
648 MESSAGE(STATUS " ${BACKENDS}")
653 MESSAGE(STATUS "WARNING: Building the Windows version without DirectSound output")
654 MESSAGE(STATUS " This is probably NOT what you want!")
659 # Install alsoft.conf configuration file
661 INSTALL(FILES alsoftrc.sample
662 DESTINATION /etc/openal
665 MESSAGE(STATUS "Installing sample alsoft.conf")
670 ADD_EXECUTABLE(openal-info utils/openal-info.c)
671 TARGET_LINK_LIBRARIES(openal-info ${LIBNAME})
672 INSTALL(TARGETS openal-info
673 RUNTIME DESTINATION bin
674 LIBRARY DESTINATION "lib${LIB_SUFFIX}"
675 ARCHIVE DESTINATION "lib${LIB_SUFFIX}"
677 MESSAGE(STATUS "Building utility programs")