~ubuntu-branches/ubuntu/saucy/openal-soft/saucy

« back to all changes in this revision

Viewing changes to .pc/compiler-flags-change.patch/CMakeLists.txt

  • Committer: Bazaar Package Importer
  • Author(s): Andres Mejia
  • Date: 2011-04-22 18:30:58 UTC
  • mfrom: (7.1.3 sid)
  • Revision ID: james.westby@ubuntu.com-20110422183058-pgxqd8022xk3vwao
Tags: 1:1.13-2
Don't build with ALSA compatibility on non-Linux architectures.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
# CMake build file list for OpenAL
 
2
 
 
3
CMAKE_MINIMUM_REQUIRED(VERSION 2.4)
 
4
 
 
5
IF(COMMAND CMAKE_POLICY)
 
6
  CMAKE_POLICY(SET CMP0003 NEW)
 
7
ENDIF(COMMAND CMAKE_POLICY)
 
8
 
 
9
SET(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake")
 
10
 
 
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)
 
20
 
 
21
 
 
22
PROJECT(OpenAL C)
 
23
 
 
24
 
 
25
SET(CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS TRUE)
 
26
 
 
27
 
 
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(DSOUND  "Check for DirectSound backend"         ON)
 
32
OPTION(WINMM   "Check for Windows Multimedia backend"  ON)
 
33
OPTION(PORTAUDIO  "Check for PortAudio backend"        ON)
 
34
OPTION(PULSEAUDIO "Check for PulseAudio backend"       ON)
 
35
OPTION(WAVE    "Enable Wave Writer backend"            ON)
 
36
 
 
37
OPTION(DLOPEN  "Check for the dlopen API for loading optional libs"  ON)
 
38
 
 
39
OPTION(WERROR  "Treat compile warnings as errors"      OFF)
 
40
 
 
41
OPTION(UTILS  "Build and install utility programs"  ON)
 
42
 
 
43
OPTION(ALSOFT_CONFIG "Install alsoft.conf configuration file" OFF)
 
44
 
 
45
 
 
46
IF(WIN32)
 
47
    SET(LIBNAME OpenAL32)
 
48
    ADD_DEFINITIONS("-D_WIN32")
 
49
ELSE()
 
50
    SET(LIBNAME openal)
 
51
ENDIF()
 
52
 
 
53
IF(NOT LIBTYPE)
 
54
    SET(LIBTYPE SHARED)
 
55
ENDIF()
 
56
 
 
57
SET(LIB_MAJOR_VERSION "1")
 
58
SET(LIB_MINOR_VERSION "13")
 
59
SET(LIB_VERSION "${LIB_MAJOR_VERSION}.${LIB_MINOR_VERSION}")
 
60
 
 
61
 
 
62
CHECK_TYPE_SIZE("long" SIZEOF_LONG)
 
63
CHECK_TYPE_SIZE("long long" SIZEOF_LONG_LONG)
 
64
CHECK_TYPE_SIZE("unsigned int" SIZEOF_UINT)
 
65
CHECK_TYPE_SIZE("void*" SIZEOF_VOIDP)
 
66
 
 
67
 
 
68
# Add definitions, compiler switches, etc.
 
69
INCLUDE_DIRECTORIES(OpenAL32/Include include "${OpenAL_BINARY_DIR}")
 
70
 
 
71
IF(NOT CMAKE_BUILD_TYPE)
 
72
    SET(CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING
 
73
        "Choose the type of build, options are: Debug Release RelWithDebInfo MinSizeRel."
 
74
        FORCE)
 
75
ENDIF()
 
76
IF(NOT CMAKE_DEBUG_POSTFIX)
 
77
    SET(CMAKE_DEBUG_POSTFIX "" CACHE STRING
 
78
        "Library postfix for debug builds. Normally left blank."
 
79
        FORCE)
 
80
ENDIF()
 
81
 
 
82
IF(MSVC)
 
83
    # ???
 
84
    SET(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} -D_DEBUG")
 
85
    SET(CMAKE_C_FLAGS_MINSIZEREL "${CMAKE_C_FLAGS_MINSIZEREL} -DNDEBUG")
 
86
    SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -DNDEBUG")
 
87
    SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -D_DEBUG")
 
88
    ADD_DEFINITIONS(-D_CRT_SECURE_NO_WARNINGS)
 
89
    ADD_DEFINITIONS(-D_CRT_NONSTDC_NO_DEPRECATE)
 
90
 
 
91
    IF(NOT DXSDK_DIR)
 
92
        STRING(REGEX REPLACE "\\\\" "/" DXSDK_DIR "$ENV{DXSDK_DIR}")
 
93
    ELSE()
 
94
        STRING(REGEX REPLACE "\\\\" "/" DXSDK_DIR "${DXSDK_DIR}")
 
95
    ENDIF()
 
96
    IF(DXSDK_DIR)
 
97
        MESSAGE(STATUS "Using DirectX SDK directory: ${DXSDK_DIR}")
 
98
        SET(CMAKE_REQUIRED_INCLUDES ${CMAKE_REQUIRED_INCLUDES} "${DXSDK_DIR}/Include")
 
99
        INCLUDE_DIRECTORIES("${DXSDK_DIR}/Include")
 
100
        LINK_DIRECTORIES("${DXSDK_DIR}/Lib")
 
101
    ENDIF()
 
102
 
 
103
    OPTION(FORCE_STATIC_VCRT "Force /MT for static VC runtimes" OFF)
 
104
    IF(FORCE_STATIC_VCRT)
 
105
        FOREACH(flag_var
 
106
                CMAKE_C_FLAGS CMAKE_C_FLAGS_DEBUG CMAKE_C_FLAGS_RELEASE
 
107
                CMAKE_C_FLAGS_MINSIZEREL CMAKE_C_FLAGS_RELWITHDEBINFO)
 
108
            IF(${flag_var} MATCHES "/MD")
 
109
                STRING(REGEX REPLACE "/MD" "/MT" ${flag_var} "${${flag_var}}")
 
110
            ENDIF()
 
111
        ENDFOREACH(flag_var)
 
112
    ENDIF()
 
113
ELSE()
 
114
    ADD_DEFINITIONS(-Winline -Wall)
 
115
    CHECK_C_COMPILER_FLAG(-Wextra HAVE_W_EXTRA)
 
116
    IF(HAVE_W_EXTRA)
 
117
        ADD_DEFINITIONS(-Wextra)
 
118
    ENDIF()
 
119
 
 
120
    IF(WERROR)
 
121
        ADD_DEFINITIONS(-Werror)
 
122
    ENDIF()
 
123
 
 
124
    SET(CMAKE_C_FLAGS_RELWITHDEBINFO "-g -O2 -D_DEBUG" CACHE STRING
 
125
        "Flags used by the compiler during Release with Debug Info builds."
 
126
        FORCE)
 
127
    SET(CMAKE_C_FLAGS_MINSIZEREL "-Os -DNDEBUG" CACHE STRING
 
128
        "Flags used by the compiler during release minsize builds."
 
129
        FORCE)
 
130
    SET(CMAKE_C_FLAGS_RELEASE "-O2 -fomit-frame-pointer -DNDEBUG" CACHE STRING
 
131
        "Flags used by the compiler during release builds"
 
132
        FORCE)
 
133
    SET(CMAKE_C_FLAGS_DEBUG "-g3 -D_DEBUG" CACHE STRING
 
134
        "Flags used by the compiler during debug builds."
 
135
        FORCE)
 
136
 
 
137
    CHECK_C_SOURCE_COMPILES("int foo() __attribute__((destructor));
 
138
                             int main() {return 0;}" HAVE_GCC_DESTRUCTOR)
 
139
 
 
140
    # Set visibility options if available
 
141
    IF(NOT WIN32)
 
142
        CHECK_C_COMPILER_FLAG(-fvisibility=internal HAVE_VISIBILITY_SWITCH)
 
143
        IF(HAVE_VISIBILITY_SWITCH)
 
144
            CHECK_C_SOURCE_COMPILES("int foo() __attribute__((visibility(\"default\")));
 
145
                                     int main() {return 0;}" HAVE_GCC_VISIBILITY)
 
146
            IF(HAVE_GCC_VISIBILITY)
 
147
                ADD_DEFINITIONS(-fvisibility=internal -DHAVE_GCC_VISIBILITY)
 
148
            ENDIF()
 
149
        ENDIF()
 
150
    ENDIF()
 
151
ENDIF()
 
152
 
 
153
CHECK_C_SOURCE_COMPILES("int foo(const char *str, ...) __attribute__((format(printf, 1, 2)));
 
154
                         int main() {return 0;}" HAVE_GCC_FORMAT)
 
155
 
 
156
CHECK_INCLUDE_FILE(fenv.h HAVE_FENV_H)
 
157
CHECK_INCLUDE_FILE(float.h HAVE_FLOAT_H)
 
158
 
 
159
CHECK_LIBRARY_EXISTS(m  powf   "" HAVE_POWF)
 
160
CHECK_LIBRARY_EXISTS(m  sqrtf  "" HAVE_SQRTF)
 
161
CHECK_LIBRARY_EXISTS(m  acosf  "" HAVE_ACOSF)
 
162
CHECK_LIBRARY_EXISTS(m  atanf  "" HAVE_ATANF)
 
163
CHECK_LIBRARY_EXISTS(m  fabsf  "" HAVE_FABSF)
 
164
IF(HAVE_FENV_H)
 
165
    CHECK_LIBRARY_EXISTS(m  fesetround  "" HAVE_FESETROUND)
 
166
ENDIF()
 
167
IF(HAVE_SQRTF OR HAVE_ACOSF OR HAVE_ATANF OR HAVE_FABSF OR HAVE_FESETROUND)
 
168
    SET(EXTRA_LIBS m ${EXTRA_LIBS})
 
169
ENDIF()
 
170
CHECK_FUNCTION_EXISTS(strtof HAVE_STRTOF)
 
171
CHECK_FUNCTION_EXISTS(_controlfp HAVE__CONTROLFP)
 
172
 
 
173
CHECK_FUNCTION_EXISTS(stat HAVE_STAT)
 
174
CHECK_FUNCTION_EXISTS(strcasecmp HAVE_STRCASECMP)
 
175
IF(NOT HAVE_STRCASECMP)
 
176
    CHECK_FUNCTION_EXISTS(_stricmp HAVE__STRICMP)
 
177
    IF(NOT HAVE__STRICMP)
 
178
        MESSAGE(FATAL_ERROR "No case-insensitive compare function found, please report!")
 
179
    ENDIF()
 
180
 
 
181
    ADD_DEFINITIONS(-Dstrcasecmp=_stricmp)
 
182
ENDIF()
 
183
 
 
184
CHECK_FUNCTION_EXISTS(strncasecmp HAVE_STRNCASECMP)
 
185
IF(NOT HAVE_STRNCASECMP)
 
186
    CHECK_FUNCTION_EXISTS(_strnicmp HAVE__STRNICMP)
 
187
    IF(NOT HAVE__STRNICMP)
 
188
        MESSAGE(FATAL_ERROR "No case-insensitive size-limitted compare function found, please report!")
 
189
    ENDIF()
 
190
 
 
191
    ADD_DEFINITIONS(-Dstrncasecmp=_strnicmp)
 
192
ENDIF()
 
193
 
 
194
CHECK_FUNCTION_EXISTS(snprintf HAVE_SNPRINTF)
 
195
IF(NOT HAVE_SNPRINTF)
 
196
    CHECK_FUNCTION_EXISTS(_snprintf HAVE__SNPRINTF)
 
197
    IF(NOT HAVE__SNPRINTF)
 
198
        MESSAGE(FATAL_ERROR "No snprintf function found, please report!")
 
199
    ENDIF()
 
200
 
 
201
    ADD_DEFINITIONS(-Dsnprintf=_snprintf)
 
202
ENDIF()
 
203
 
 
204
CHECK_FUNCTION_EXISTS(vsnprintf HAVE_VSNPRINTF)
 
205
IF(NOT HAVE_VSNPRINTF)
 
206
    CHECK_FUNCTION_EXISTS(_vsnprintf HAVE__VSNPRINTF)
 
207
    IF(NOT HAVE__VSNPRINTF)
 
208
        MESSAGE(FATAL_ERROR "No vsnprintf function found, please report!")
 
209
    ENDIF()
 
210
 
 
211
    ADD_DEFINITIONS(-Dvsnprintf=_vsnprintf)
 
212
ENDIF()
 
213
 
 
214
CHECK_SYMBOL_EXISTS(isnan math.h HAVE_ISNAN)
 
215
IF(NOT HAVE_ISNAN)
 
216
    CHECK_FUNCTION_EXISTS(_isnan HAVE__ISNAN)
 
217
    IF(NOT HAVE__ISNAN)
 
218
        MESSAGE(FATAL_ERROR "No isnan function found, please report!")
 
219
    ENDIF()
 
220
 
 
221
    ADD_DEFINITIONS(-Disnan=_isnan)
 
222
ENDIF()
 
223
 
 
224
 
 
225
# Check for the dlopen API (for dynamicly loading backend libs)
 
226
IF(DLOPEN)
 
227
    CHECK_INCLUDE_FILE(dlfcn.h HAVE_DLFCN_H)
 
228
    IF(HAVE_DLFCN_H)
 
229
        CHECK_LIBRARY_EXISTS(dl dlopen "" HAVE_LIBDL)
 
230
        IF(HAVE_LIBDL)
 
231
            SET(EXTRA_LIBS dl ${EXTRA_LIBS})
 
232
        ENDIF()
 
233
    ENDIF()
 
234
ENDIF()
 
235
 
 
236
# Check if we have Windows headers
 
237
CHECK_INCLUDE_FILE(windows.h HAVE_WINDOWS_H -D_WIN32_WINNT=0x0500)
 
238
IF(NOT HAVE_WINDOWS_H)
 
239
    CHECK_FUNCTION_EXISTS(gettimeofday HAVE_GETTIMEOFDAY)
 
240
    IF(NOT HAVE_GETTIMEOFDAY)
 
241
        MESSAGE(FATAL_ERROR "No timing function found!")
 
242
    ENDIF()
 
243
 
 
244
    CHECK_FUNCTION_EXISTS(nanosleep HAVE_NANOSLEEP)
 
245
    IF(NOT HAVE_NANOSLEEP)
 
246
        MESSAGE(FATAL_ERROR "No sleep function found!")
 
247
    ENDIF()
 
248
 
 
249
    CHECK_C_COMPILER_FLAG(-pthread HAVE_PTHREAD)
 
250
    IF(HAVE_PTHREAD)
 
251
        ADD_DEFINITIONS(-pthread)
 
252
        SET(EXTRA_LIBS ${EXTRA_LIBS} -pthread)
 
253
    ENDIF()
 
254
 
 
255
    # We need pthreads outside of Windows
 
256
    CHECK_INCLUDE_FILE(pthread.h HAVE_PTHREAD_H)
 
257
    IF(NOT HAVE_PTHREAD_H)
 
258
        MESSAGE(FATAL_ERROR "PThreads is required for non-Windows builds!")
 
259
    ENDIF()
 
260
    # Some systems need pthread_np.h to get recursive mutexes
 
261
    CHECK_INCLUDE_FILES("pthread.h;pthread_np.h" HAVE_PTHREAD_NP_H)
 
262
 
 
263
    # _GNU_SOURCE is needed on some systems for extra attributes, and
 
264
    # _REENTRANT is needed for libc thread-safety
 
265
    ADD_DEFINITIONS(-D_GNU_SOURCE=1)
 
266
    CHECK_LIBRARY_EXISTS(pthread pthread_create "" HAVE_LIBPTHREAD)
 
267
    IF(HAVE_LIBPTHREAD)
 
268
        SET(EXTRA_LIBS pthread ${EXTRA_LIBS})
 
269
    ENDIF()
 
270
 
 
271
    CHECK_LIBRARY_EXISTS(pthread pthread_setschedparam "" HAVE_PTHREAD_SETSCHEDPARAM)
 
272
 
 
273
    CHECK_LIBRARY_EXISTS(rt clock_gettime "" HAVE_LIBRT)
 
274
    IF(HAVE_LIBRT)
 
275
        SET(EXTRA_LIBS rt ${EXTRA_LIBS})
 
276
    ENDIF()
 
277
ENDIF()
 
278
 
 
279
# Check for a 64-bit type
 
280
CHECK_INCLUDE_FILE(stdint.h HAVE_STDINT_H)
 
281
IF(NOT HAVE_STDINT_H)
 
282
    IF(HAVE_WINDOWS_H)
 
283
        CHECK_C_SOURCE_COMPILES("\#define _WIN32_WINNT 0x0500
 
284
                                 \#include <windows.h>
 
285
                                 __int64 foo;
 
286
                                 int main() {return 0;}" HAVE___INT64)
 
287
    ENDIF()
 
288
    IF(NOT HAVE___INT64)
 
289
        IF(NOT SIZEOF_LONG MATCHES "8")
 
290
            IF(NOT SIZEOF_LONG_LONG MATCHES "8")
 
291
                MESSAGE(FATAL_ERROR "No 64-bit types found, please report!")
 
292
            ENDIF()
 
293
        ENDIF()
 
294
    ENDIF()
 
295
ENDIF()
 
296
 
 
297
IF(WIN32)
 
298
    # Windows needs winmm for timeGetTime, even if the backend is disabled
 
299
    CHECK_SHARED_LIBRARY_EXISTS(winmm timeGetTime 0 "" HAVE_LIBWINMM)
 
300
    IF(HAVE_LIBWINMM)
 
301
        SET(EXTRA_LIBS winmm ${EXTRA_LIBS})
 
302
        SET(PKG_CONFIG_LIBS ${PKG_CONFIG_LIBS} -lwinmm)
 
303
    ENDIF()
 
304
ENDIF()
 
305
 
 
306
 
 
307
SET(OPENAL_OBJS  OpenAL32/alAuxEffectSlot.c
 
308
                 OpenAL32/alBuffer.c
 
309
                 OpenAL32/alDatabuffer.c
 
310
                 OpenAL32/alEffect.c
 
311
                 OpenAL32/alError.c
 
312
                 OpenAL32/alExtension.c
 
313
                 OpenAL32/alFilter.c
 
314
                 OpenAL32/alListener.c
 
315
                 OpenAL32/alSource.c
 
316
                 OpenAL32/alState.c
 
317
                 OpenAL32/alThunk.c
 
318
)
 
319
SET(ALC_OBJS  Alc/ALc.c
 
320
              Alc/ALu.c
 
321
              Alc/alcConfig.c
 
322
              Alc/alcEcho.c
 
323
              Alc/alcModulator.c
 
324
              Alc/alcReverb.c
 
325
              Alc/alcRing.c
 
326
              Alc/alcThread.c
 
327
              Alc/bs2b.c
 
328
              Alc/mixer.c
 
329
              Alc/panning.c
 
330
              Alc/null.c
 
331
)
 
332
 
 
333
SET(BACKENDS "")
 
334
SET(HAVE_ALSA       0)
 
335
SET(HAVE_OSS        0)
 
336
SET(HAVE_SOLARIS    0)
 
337
SET(HAVE_DSOUND     0)
 
338
SET(HAVE_WINMM      0)
 
339
SET(HAVE_PORTAUDIO  0)
 
340
SET(HAVE_PULSEAUDIO 0)
 
341
SET(HAVE_WAVE       0)
 
342
 
 
343
# Check ALSA backend
 
344
IF(ALSA)
 
345
    CHECK_INCLUDE_FILE(alsa/asoundlib.h HAVE_ALSA_ASOUNDLIB_H)
 
346
    IF(HAVE_ALSA_ASOUNDLIB_H)
 
347
        CHECK_SHARED_LIBRARY_EXISTS(asound snd_pcm_open 4 "" HAVE_LIBASOUND)
 
348
        IF(HAVE_LIBASOUND OR HAVE_DLFCN_H OR WIN32)
 
349
            SET(HAVE_ALSA 1)
 
350
            SET(ALC_OBJS  ${ALC_OBJS} Alc/alsa.c)
 
351
            IF(HAVE_DLFCN_H OR WIN32)
 
352
                SET(BACKENDS  "${BACKENDS} ALSA,")
 
353
            ELSE()
 
354
                SET(BACKENDS  "${BACKENDS} ALSA \(linked\),")
 
355
                SET(EXTRA_LIBS asound ${EXTRA_LIBS})
 
356
            ENDIF()
 
357
        ENDIF()
 
358
    ENDIF()
 
359
ENDIF()
 
360
 
 
361
# Check OSS backend
 
362
IF(OSS)
 
363
    CHECK_INCLUDE_FILE(sys/soundcard.h HAVE_SYS_SOUNDCARD_H)
 
364
    IF(HAVE_SYS_SOUNDCARD_H)
 
365
        SET(HAVE_OSS 1)
 
366
        SET(ALC_OBJS  ${ALC_OBJS} Alc/oss.c)
 
367
        SET(BACKENDS  "${BACKENDS} OSS,")
 
368
    ENDIF()
 
369
ENDIF()
 
370
 
 
371
# Check Solaris backend
 
372
IF(SOLARIS)
 
373
    CHECK_INCLUDE_FILE(sys/audioio.h HAVE_SYS_AUDIOIO_H)
 
374
    IF(HAVE_SYS_AUDIOIO_H)
 
375
        SET(HAVE_SOLARIS 1)
 
376
        SET(ALC_OBJS  ${ALC_OBJS} Alc/solaris.c)
 
377
        SET(BACKENDS  "${BACKENDS} Solaris,")
 
378
    ENDIF()
 
379
ENDIF()
 
380
 
 
381
# Check DSound/MMSystem backend
 
382
IF(DSOUND)
 
383
    CHECK_INCLUDE_FILE(dsound.h HAVE_DSOUND_H)
 
384
    IF(HAVE_DSOUND_H)
 
385
        CHECK_SHARED_LIBRARY_EXISTS(dsound DirectSoundCreate 3 "" HAVE_LIBDSOUND)
 
386
        IF(HAVE_LIBDSOUND OR HAVE_DLFCN_H OR WIN32)
 
387
            SET(HAVE_DSOUND 1)
 
388
            SET(ALC_OBJS  ${ALC_OBJS} Alc/dsound.c)
 
389
 
 
390
            IF(HAVE_DLFCN_H OR WIN32)
 
391
                SET(BACKENDS  "${BACKENDS} DirectSound,")
 
392
            ELSE()
 
393
                SET(BACKENDS  "${BACKENDS} DirectSound \(linked\),")
 
394
                SET(EXTRA_LIBS dsound ${EXTRA_LIBS})
 
395
            ENDIF()
 
396
        ENDIF()
 
397
    ENDIF()
 
398
ENDIF()
 
399
 
 
400
IF(HAVE_WINDOWS_H)
 
401
    IF(WINMM)
 
402
        CHECK_INCLUDE_FILES("windows.h;mmsystem.h" HAVE_MMSYSTEM_H -D_WIN32_WINNT=0x0500)
 
403
        IF(HAVE_MMSYSTEM_H AND HAVE_LIBWINMM)
 
404
            SET(HAVE_WINMM 1)
 
405
            SET(ALC_OBJS  ${ALC_OBJS} Alc/winmm.c)
 
406
            SET(BACKENDS  "${BACKENDS} WinMM,")
 
407
        ENDIF()
 
408
    ENDIF()
 
409
ENDIF()
 
410
 
 
411
# Check PortAudio backend
 
412
IF(PORTAUDIO)
 
413
    CHECK_INCLUDE_FILE(portaudio.h HAVE_PORTAUDIO_H)
 
414
    IF(HAVE_PORTAUDIO_H)
 
415
        CHECK_SHARED_LIBRARY_EXISTS(portaudio Pa_Initialize 0 "" HAVE_LIBPORTAUDIO)
 
416
        IF(HAVE_LIBPORTAUDIO OR HAVE_DLFCN_H OR WIN32)
 
417
            SET(HAVE_PORTAUDIO 1)
 
418
            SET(ALC_OBJS  ${ALC_OBJS} Alc/portaudio.c)
 
419
            IF(HAVE_DLFCN_H OR WIN32)
 
420
                SET(BACKENDS  "${BACKENDS} PortAudio,")
 
421
            ELSE()
 
422
                SET(BACKENDS  "${BACKENDS} PortAudio \(linked\),")
 
423
                SET(EXTRA_LIBS portaudio ${EXTRA_LIBS})
 
424
            ENDIF()
 
425
        ENDIF()
 
426
    ENDIF()
 
427
ENDIF()
 
428
 
 
429
# Check PortAudio backend
 
430
IF(PULSEAUDIO)
 
431
    CHECK_INCLUDE_FILE(pulse/pulseaudio.h HAVE_PULSE_PULSEAUDIO_H)
 
432
    IF(HAVE_PULSE_PULSEAUDIO_H)
 
433
        CHECK_SHARED_LIBRARY_EXISTS(pulse pa_context_new 2 "" HAVE_LIBPULSE)
 
434
        IF(HAVE_LIBPULSE OR HAVE_DLFCN_H OR WIN32)
 
435
            SET(HAVE_PULSEAUDIO 1)
 
436
            SET(ALC_OBJS  ${ALC_OBJS} Alc/pulseaudio.c)
 
437
            IF(HAVE_DLFCN_H OR WIN32)
 
438
                SET(BACKENDS  "${BACKENDS} PulseAudio,")
 
439
            ELSE()
 
440
                SET(BACKENDS  "${BACKENDS} PulseAudio \(linked\),")
 
441
                SET(EXTRA_LIBS pulse ${EXTRA_LIBS})
 
442
            ENDIF()
 
443
        ENDIF()
 
444
    ENDIF()
 
445
ENDIF()
 
446
 
 
447
# Optionally enable the Wave Writer backend
 
448
IF(WAVE)
 
449
    SET(HAVE_WAVE 1)
 
450
    SET(ALC_OBJS  ${ALC_OBJS} Alc/wave.c)
 
451
    SET(BACKENDS  "${BACKENDS} WaveFile,")
 
452
ENDIF()
 
453
 
 
454
# This is always available
 
455
SET(BACKENDS  "${BACKENDS} Null")
 
456
 
 
457
IF(LIBTYPE STREQUAL "STATIC")
 
458
    ADD_DEFINITIONS(-DAL_LIBTYPE_STATIC)
 
459
    SET(PKG_CONFIG_CFLAGS -DAL_LIBTYPE_STATIC ${PKG_CONFIG_CFLAGS})
 
460
ENDIF()
 
461
 
 
462
# Needed for openal.pc.in
 
463
SET(prefix ${CMAKE_INSTALL_PREFIX})
 
464
SET(exec_prefix "\${prefix}")
 
465
SET(libdir "\${exec_prefix}/lib${LIB_SUFFIX}")
 
466
SET(bindir "\${exec_prefix}/bin")
 
467
SET(includedir "\${prefix}/include")
 
468
SET(PACKAGE_VERSION "${LIB_VERSION}")
 
469
 
 
470
# End configuration
 
471
CONFIGURE_FILE(
 
472
    "${OpenAL_SOURCE_DIR}/config.h.in"
 
473
    "${OpenAL_BINARY_DIR}/config.h")
 
474
CONFIGURE_FILE(
 
475
    "${OpenAL_SOURCE_DIR}/openal.pc.in"
 
476
    "${OpenAL_BINARY_DIR}/openal.pc"
 
477
    @ONLY)
 
478
 
 
479
# Build a library
 
480
ADD_LIBRARY(${LIBNAME} ${LIBTYPE} ${OPENAL_OBJS} ${ALC_OBJS})
 
481
SET_TARGET_PROPERTIES(${LIBNAME} PROPERTIES DEFINE_SYMBOL AL_BUILD_LIBRARY
 
482
                                            COMPILE_FLAGS -DAL_ALEXT_PROTOTYPES
 
483
                                            VERSION ${LIB_VERSION}.0
 
484
                                            SOVERSION ${LIB_MAJOR_VERSION})
 
485
IF(WIN32 AND NOT LIBTYPE STREQUAL "STATIC")
 
486
    SET_TARGET_PROPERTIES(${LIBNAME} PROPERTIES PREFIX "")
 
487
ENDIF()
 
488
 
 
489
TARGET_LINK_LIBRARIES(${LIBNAME} ${EXTRA_LIBS})
 
490
 
 
491
# Add an install target here
 
492
INSTALL(TARGETS ${LIBNAME}
 
493
        RUNTIME DESTINATION bin
 
494
        LIBRARY DESTINATION "lib${LIB_SUFFIX}"
 
495
        ARCHIVE DESTINATION "lib${LIB_SUFFIX}"
 
496
)
 
497
INSTALL(FILES include/AL/al.h
 
498
              include/AL/alc.h
 
499
              include/AL/alext.h
 
500
              include/AL/efx.h
 
501
              include/AL/efx-creative.h
 
502
        DESTINATION include/AL
 
503
)
 
504
INSTALL(FILES "${OpenAL_BINARY_DIR}/openal.pc"
 
505
        DESTINATION "lib${LIB_SUFFIX}/pkgconfig")
 
506
 
 
507
 
 
508
MESSAGE(STATUS "")
 
509
MESSAGE(STATUS "Building OpenAL with support for the following backends:")
 
510
MESSAGE(STATUS "    ${BACKENDS}")
 
511
MESSAGE(STATUS "")
 
512
 
 
513
IF(WIN32)
 
514
    IF(NOT HAVE_DSOUND)
 
515
        MESSAGE(STATUS "WARNING: Building the Windows version without DirectSound output")
 
516
        MESSAGE(STATUS "         This is probably NOT what you want!")
 
517
        MESSAGE(STATUS "")
 
518
    ENDIF()
 
519
ENDIF()
 
520
 
 
521
# Install alsoft.conf configuration file
 
522
IF(ALSOFT_CONFIG)
 
523
    INSTALL(FILES alsoftrc.sample
 
524
            DESTINATION /etc/openal
 
525
            RENAME alsoft.conf
 
526
    )
 
527
    MESSAGE(STATUS "Installing sample alsoft.conf")
 
528
    MESSAGE(STATUS "")
 
529
ENDIF()
 
530
 
 
531
IF(UTILS)
 
532
    ADD_EXECUTABLE(openal-info utils/openal-info.c)
 
533
    TARGET_LINK_LIBRARIES(openal-info ${LIBNAME})
 
534
    INSTALL(TARGETS openal-info
 
535
            RUNTIME DESTINATION bin
 
536
            LIBRARY DESTINATION "lib${LIB_SUFFIX}"
 
537
            ARCHIVE DESTINATION "lib${LIB_SUFFIX}"
 
538
    )
 
539
    MESSAGE(STATUS "Building utility programs")
 
540
    MESSAGE(STATUS "")
 
541
ENDIF()