rlm@0
|
1 # CMake build file list for OpenAL
|
rlm@0
|
2
|
rlm@0
|
3 CMAKE_MINIMUM_REQUIRED(VERSION 2.4)
|
rlm@0
|
4
|
rlm@0
|
5 IF(COMMAND CMAKE_POLICY)
|
rlm@0
|
6 CMAKE_POLICY(SET CMP0003 NEW)
|
rlm@0
|
7 ENDIF(COMMAND CMAKE_POLICY)
|
rlm@0
|
8
|
rlm@0
|
9 SET(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake")
|
rlm@0
|
10
|
rlm@0
|
11 INCLUDE(CheckFunctionExists)
|
rlm@0
|
12 INCLUDE(CheckLibraryExists)
|
rlm@0
|
13 INCLUDE(CheckSharedFunctionExists)
|
rlm@0
|
14 INCLUDE(CheckIncludeFile)
|
rlm@0
|
15 INCLUDE(CheckIncludeFiles)
|
rlm@0
|
16 INCLUDE(CheckSymbolExists)
|
rlm@0
|
17 INCLUDE(CheckCCompilerFlag)
|
rlm@0
|
18 INCLUDE(CheckCSourceCompiles)
|
rlm@0
|
19 INCLUDE(CheckTypeSize)
|
rlm@0
|
20
|
rlm@0
|
21
|
rlm@0
|
22 PROJECT(OpenAL C)
|
rlm@0
|
23
|
rlm@0
|
24
|
rlm@0
|
25 SET(CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS TRUE)
|
rlm@0
|
26
|
rlm@0
|
27
|
rlm@0
|
28 OPTION(SEND "Enable Send Backend" ON)
|
rlm@0
|
29
|
rlm@0
|
30 OPTION(DLOPEN "Check for the dlopen API for loading optional libs" ON)
|
rlm@0
|
31
|
rlm@0
|
32 OPTION(WERROR "Treat compile warnings as errors" OFF)
|
rlm@0
|
33
|
rlm@0
|
34 OPTION(UTILS "Build and install utility programs" ON)
|
rlm@0
|
35
|
rlm@0
|
36 OPTION(ALSOFT_CONFIG "Install alsoft.conf configuration file" OFF)
|
rlm@0
|
37
|
rlm@0
|
38
|
rlm@0
|
39 IF(WIN32)
|
rlm@0
|
40 SET(LIBNAME OpenAL32)
|
rlm@0
|
41 ADD_DEFINITIONS("-D_WIN32")
|
rlm@0
|
42 ELSE()
|
rlm@0
|
43 SET(LIBNAME openal)
|
rlm@0
|
44 ENDIF()
|
rlm@0
|
45
|
rlm@0
|
46 IF(NOT LIBTYPE)
|
rlm@0
|
47 SET(LIBTYPE SHARED)
|
rlm@0
|
48 ENDIF()
|
rlm@0
|
49
|
rlm@0
|
50 SET(LIB_MAJOR_VERSION "1")
|
rlm@0
|
51 SET(LIB_MINOR_VERSION "13")
|
rlm@0
|
52 SET(LIB_VERSION "${LIB_MAJOR_VERSION}.${LIB_MINOR_VERSION}")
|
rlm@0
|
53
|
rlm@0
|
54 SET(EXPORT_DECL "")
|
rlm@0
|
55
|
rlm@0
|
56
|
rlm@0
|
57 CHECK_TYPE_SIZE("long" SIZEOF_LONG)
|
rlm@0
|
58 CHECK_TYPE_SIZE("long long" SIZEOF_LONG_LONG)
|
rlm@0
|
59 CHECK_TYPE_SIZE("unsigned int" SIZEOF_UINT)
|
rlm@0
|
60 CHECK_TYPE_SIZE("void*" SIZEOF_VOIDP)
|
rlm@0
|
61
|
rlm@0
|
62
|
rlm@0
|
63 CHECK_C_SOURCE_COMPILES("int *restrict foo;
|
rlm@0
|
64 int main() {return 0;}" HAVE_RESTRICT)
|
rlm@0
|
65 CHECK_C_SOURCE_COMPILES("int *__restrict foo;
|
rlm@0
|
66 int main() {return 0;}" HAVE___RESTRICT)
|
rlm@0
|
67
|
rlm@0
|
68
|
rlm@0
|
69 # Add definitions, compiler switches, etc.
|
rlm@0
|
70 INCLUDE_DIRECTORIES(OpenAL32/Include include "${OpenAL_BINARY_DIR}")
|
rlm@0
|
71
|
rlm@0
|
72 IF(NOT CMAKE_BUILD_TYPE)
|
rlm@0
|
73 SET(CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING
|
rlm@0
|
74 "Choose the type of build, options are: Debug Release RelWithDebInfo MinSizeRel."
|
rlm@0
|
75 FORCE)
|
rlm@0
|
76 ENDIF()
|
rlm@0
|
77 IF(NOT CMAKE_DEBUG_POSTFIX)
|
rlm@0
|
78 SET(CMAKE_DEBUG_POSTFIX "" CACHE STRING
|
rlm@0
|
79 "Library postfix for debug builds. Normally left blank."
|
rlm@0
|
80 FORCE)
|
rlm@0
|
81 ENDIF()
|
rlm@0
|
82
|
rlm@0
|
83
|
rlm@0
|
84
|
rlm@0
|
85 IF(MSVC)
|
rlm@0
|
86 # ???
|
rlm@0
|
87 SET(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} -D_DEBUG")
|
rlm@0
|
88 SET(CMAKE_C_FLAGS_MINSIZEREL "${CMAKE_C_FLAGS_MINSIZEREL} -DNDEBUG")
|
rlm@0
|
89 SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -DNDEBUG")
|
rlm@0
|
90 SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -D_DEBUG")
|
rlm@0
|
91 ADD_DEFINITIONS(-D_CRT_SECURE_NO_WARNINGS)
|
rlm@0
|
92 ADD_DEFINITIONS(-D_CRT_NONSTDC_NO_DEPRECATE)
|
rlm@0
|
93
|
rlm@0
|
94 IF(NOT DXSDK_DIR)
|
rlm@0
|
95 STRING(REGEX REPLACE "\\\\" "/" DXSDK_DIR "$ENV{DXSDK_DIR}")
|
rlm@0
|
96 ELSE()
|
rlm@0
|
97 STRING(REGEX REPLACE "\\\\" "/" DXSDK_DIR "${DXSDK_DIR}")
|
rlm@0
|
98 ENDIF()
|
rlm@0
|
99 IF(DXSDK_DIR)
|
rlm@0
|
100 MESSAGE(STATUS "Using DirectX SDK directory: ${DXSDK_DIR}")
|
rlm@0
|
101 SET(CMAKE_REQUIRED_INCLUDES ${CMAKE_REQUIRED_INCLUDES} "${DXSDK_DIR}/Include")
|
rlm@0
|
102 INCLUDE_DIRECTORIES("${DXSDK_DIR}/Include")
|
rlm@0
|
103 LINK_DIRECTORIES("${DXSDK_DIR}/Lib")
|
rlm@0
|
104 ENDIF()
|
rlm@0
|
105
|
rlm@0
|
106 OPTION(FORCE_STATIC_VCRT "Force /MT for static VC runtimes" OFF)
|
rlm@0
|
107 IF(FORCE_STATIC_VCRT)
|
rlm@0
|
108 FOREACH(flag_var
|
rlm@0
|
109 CMAKE_C_FLAGS CMAKE_C_FLAGS_DEBUG CMAKE_C_FLAGS_RELEASE
|
rlm@0
|
110 CMAKE_C_FLAGS_MINSIZEREL CMAKE_C_FLAGS_RELWITHDEBINFO)
|
rlm@0
|
111 IF(${flag_var} MATCHES "/MD")
|
rlm@0
|
112 STRING(REGEX REPLACE "/MD" "/MT" ${flag_var} "${${flag_var}}")
|
rlm@0
|
113 ENDIF()
|
rlm@0
|
114 ENDFOREACH(flag_var)
|
rlm@0
|
115 ENDIF()
|
rlm@0
|
116 ELSE()
|
rlm@0
|
117 ADD_DEFINITIONS(-Winline -Wall)
|
rlm@0
|
118 CHECK_C_COMPILER_FLAG(-Wextra HAVE_W_EXTRA)
|
rlm@0
|
119 IF(HAVE_W_EXTRA)
|
rlm@0
|
120 ADD_DEFINITIONS(-Wextra)
|
rlm@0
|
121 ENDIF()
|
rlm@0
|
122
|
rlm@0
|
123 IF(WERROR)
|
rlm@0
|
124 ADD_DEFINITIONS(-Werror)
|
rlm@0
|
125 ENDIF()
|
rlm@0
|
126
|
rlm@0
|
127 SET(CMAKE_C_FLAGS_RELWITHDEBINFO "-g -O2 -D_DEBUG" CACHE STRING
|
rlm@0
|
128 "Flags used by the compiler during Release with Debug Info builds."
|
rlm@0
|
129 FORCE)
|
rlm@0
|
130 SET(CMAKE_C_FLAGS_MINSIZEREL "-Os -DNDEBUG" CACHE STRING
|
rlm@0
|
131 "Flags used by the compiler during release minsize builds."
|
rlm@0
|
132 FORCE)
|
rlm@0
|
133 SET(CMAKE_C_FLAGS_RELEASE "-O2 -fomit-frame-pointer -DNDEBUG" CACHE STRING
|
rlm@0
|
134 "Flags used by the compiler during release builds"
|
rlm@0
|
135 FORCE)
|
rlm@0
|
136 SET(CMAKE_C_FLAGS_DEBUG "-g3 -D_DEBUG" CACHE STRING
|
rlm@0
|
137 "Flags used by the compiler during debug builds."
|
rlm@0
|
138 FORCE)
|
rlm@0
|
139
|
rlm@0
|
140 CHECK_C_SOURCE_COMPILES("int foo() __attribute__((destructor));
|
rlm@0
|
141 int main() {return 0;}" HAVE_GCC_DESTRUCTOR)
|
rlm@0
|
142 ENDIF()
|
rlm@0
|
143
|
rlm@0
|
144 # Set visibility/export options if available
|
rlm@0
|
145 IF(WIN32)
|
rlm@0
|
146 SET(EXPORT_DECL "__declspec(dllexport)")
|
rlm@0
|
147
|
rlm@0
|
148 OPTION(WINE "Enable use of Wine headers when compiling" OFF)
|
rlm@0
|
149 IF(WINE)
|
rlm@0
|
150 FIND_PATH(WINE_INCLUDE_DIR library.h
|
rlm@0
|
151 PATHS
|
rlm@0
|
152 /usr/include/wine
|
rlm@0
|
153 /usr/local/include/wine
|
rlm@0
|
154 CMAKE_FIND_ROOT_PATH_BOTH)
|
rlm@0
|
155 IF(WINE_INCLUDE_DIR)
|
rlm@0
|
156 MESSAGE(STATUS "Found Wine header files - ${WINE_INCLUDE_DIR}" )
|
rlm@0
|
157 INCLUDE_DIRECTORIES("${WINE_INCLUDE_DIR}/windows")
|
rlm@0
|
158 SET(CMAKE_REQUIRED_INCLUDES ${CMAKE_REQUIRED_INCLUDES} "${WINE_INCLUDE_DIR}/windows")
|
rlm@0
|
159 ELSE()
|
rlm@0
|
160 MESSAGE(STATUS "Could not find Wine header files" )
|
rlm@0
|
161 ENDIF()
|
rlm@0
|
162 ENDIF()
|
rlm@0
|
163 ELSE()
|
rlm@0
|
164 CHECK_C_COMPILER_FLAG(-fvisibility=internal HAVE_VISIBILITY_SWITCH)
|
rlm@0
|
165 CHECK_C_SOURCE_COMPILES("int foo() __attribute__((visibility(\"protected\")));
|
rlm@0
|
166 int main() {return 0;}" HAVE_GCC_VISIBILITY)
|
rlm@0
|
167 IF(HAVE_VISIBILITY_SWITCH AND HAVE_GCC_VISIBILITY)
|
rlm@0
|
168 #ADD_DEFINITIONS(-fvisibility=internal)
|
rlm@0
|
169 #SET(EXPORT_DECL "__attribute__((visibility(\"protected\")))")
|
rlm@0
|
170 ENDIF()
|
rlm@0
|
171 ENDIF()
|
rlm@0
|
172
|
rlm@0
|
173 CHECK_C_SOURCE_COMPILES("int foo(const char *str, ...) __attribute__((format(printf, 1, 2)));
|
rlm@0
|
174 int main() {return 0;}" HAVE_GCC_FORMAT)
|
rlm@0
|
175
|
rlm@0
|
176 CHECK_INCLUDE_FILE(fenv.h HAVE_FENV_H)
|
rlm@0
|
177 CHECK_INCLUDE_FILE(float.h HAVE_FLOAT_H)
|
rlm@0
|
178 CHECK_INCLUDE_FILE(ieeefp.h HAVE_IEEEFP_H)
|
rlm@0
|
179 CHECK_INCLUDE_FILE(guiddef.h HAVE_GUIDDEF_H)
|
rlm@0
|
180 IF(NOT HAVE_GUIDDEF_H)
|
rlm@0
|
181 CHECK_INCLUDE_FILE(initguid.h HAVE_INITGUID_H)
|
rlm@0
|
182 ENDIF()
|
rlm@0
|
183 CHECK_INCLUDE_FILE(arm_neon.h HAVE_ARM_NEON_H)
|
rlm@0
|
184
|
rlm@0
|
185 CHECK_LIBRARY_EXISTS(m powf "" HAVE_POWF)
|
rlm@0
|
186 CHECK_LIBRARY_EXISTS(m sqrtf "" HAVE_SQRTF)
|
rlm@0
|
187 CHECK_LIBRARY_EXISTS(m acosf "" HAVE_ACOSF)
|
rlm@0
|
188 CHECK_LIBRARY_EXISTS(m atanf "" HAVE_ATANF)
|
rlm@0
|
189 CHECK_LIBRARY_EXISTS(m fabsf "" HAVE_FABSF)
|
rlm@0
|
190 IF(HAVE_FENV_H)
|
rlm@0
|
191 CHECK_LIBRARY_EXISTS(m fesetround "" HAVE_FESETROUND)
|
rlm@0
|
192 ENDIF()
|
rlm@0
|
193 IF(HAVE_SQRTF OR HAVE_ACOSF OR HAVE_ATANF OR HAVE_FABSF OR HAVE_FESETROUND)
|
rlm@0
|
194 SET(EXTRA_LIBS m ${EXTRA_LIBS})
|
rlm@0
|
195 ENDIF()
|
rlm@0
|
196 CHECK_FUNCTION_EXISTS(strtof HAVE_STRTOF)
|
rlm@0
|
197 CHECK_FUNCTION_EXISTS(_controlfp HAVE__CONTROLFP)
|
rlm@0
|
198
|
rlm@0
|
199 CHECK_FUNCTION_EXISTS(stat HAVE_STAT)
|
rlm@0
|
200 CHECK_FUNCTION_EXISTS(strcasecmp HAVE_STRCASECMP)
|
rlm@0
|
201 IF(NOT HAVE_STRCASECMP)
|
rlm@0
|
202 CHECK_FUNCTION_EXISTS(_stricmp HAVE__STRICMP)
|
rlm@0
|
203 IF(NOT HAVE__STRICMP)
|
rlm@0
|
204 MESSAGE(FATAL_ERROR "No case-insensitive compare function found, please report!")
|
rlm@0
|
205 ENDIF()
|
rlm@0
|
206
|
rlm@0
|
207 ADD_DEFINITIONS(-Dstrcasecmp=_stricmp)
|
rlm@0
|
208 ENDIF()
|
rlm@0
|
209
|
rlm@0
|
210 CHECK_FUNCTION_EXISTS(strncasecmp HAVE_STRNCASECMP)
|
rlm@0
|
211 IF(NOT HAVE_STRNCASECMP)
|
rlm@0
|
212 CHECK_FUNCTION_EXISTS(_strnicmp HAVE__STRNICMP)
|
rlm@0
|
213 IF(NOT HAVE__STRNICMP)
|
rlm@0
|
214 MESSAGE(FATAL_ERROR "No case-insensitive size-limitted compare function found, please report!")
|
rlm@0
|
215 ENDIF()
|
rlm@0
|
216
|
rlm@0
|
217 ADD_DEFINITIONS(-Dstrncasecmp=_strnicmp)
|
rlm@0
|
218 ENDIF()
|
rlm@0
|
219
|
rlm@0
|
220 CHECK_FUNCTION_EXISTS(snprintf HAVE_SNPRINTF)
|
rlm@0
|
221 IF(NOT HAVE_SNPRINTF)
|
rlm@0
|
222 CHECK_FUNCTION_EXISTS(_snprintf HAVE__SNPRINTF)
|
rlm@0
|
223 IF(NOT HAVE__SNPRINTF)
|
rlm@0
|
224 MESSAGE(FATAL_ERROR "No snprintf function found, please report!")
|
rlm@0
|
225 ENDIF()
|
rlm@0
|
226
|
rlm@0
|
227 ADD_DEFINITIONS(-Dsnprintf=_snprintf)
|
rlm@0
|
228 ENDIF()
|
rlm@0
|
229
|
rlm@0
|
230 CHECK_FUNCTION_EXISTS(vsnprintf HAVE_VSNPRINTF)
|
rlm@0
|
231 IF(NOT HAVE_VSNPRINTF)
|
rlm@0
|
232 CHECK_FUNCTION_EXISTS(_vsnprintf HAVE__VSNPRINTF)
|
rlm@0
|
233 IF(NOT HAVE__VSNPRINTF)
|
rlm@0
|
234 MESSAGE(FATAL_ERROR "No vsnprintf function found, please report!")
|
rlm@0
|
235 ENDIF()
|
rlm@0
|
236
|
rlm@0
|
237 ADD_DEFINITIONS(-Dvsnprintf=_vsnprintf)
|
rlm@0
|
238 ENDIF()
|
rlm@0
|
239
|
rlm@0
|
240 CHECK_SYMBOL_EXISTS(isfinite math.h HAVE_ISFINITE)
|
rlm@0
|
241 IF(NOT HAVE_ISFINITE)
|
rlm@0
|
242 CHECK_FUNCTION_EXISTS(finite HAVE_FINITE)
|
rlm@0
|
243 IF(NOT HAVE_FINITE)
|
rlm@0
|
244 CHECK_FUNCTION_EXISTS(_finite HAVE__FINITE)
|
rlm@0
|
245 IF(NOT HAVE__FINITE)
|
rlm@0
|
246 MESSAGE(FATAL_ERROR "No isfinite function found, please report!")
|
rlm@0
|
247 ENDIF()
|
rlm@0
|
248 ADD_DEFINITIONS(-Disfinite=_finite)
|
rlm@0
|
249 ELSE()
|
rlm@0
|
250 ADD_DEFINITIONS(-Disfinite=finite)
|
rlm@0
|
251 ENDIF()
|
rlm@0
|
252 ENDIF()
|
rlm@0
|
253
|
rlm@0
|
254 CHECK_SYMBOL_EXISTS(isnan math.h HAVE_ISNAN)
|
rlm@0
|
255 IF(NOT HAVE_ISNAN)
|
rlm@0
|
256 CHECK_FUNCTION_EXISTS(_isnan HAVE__ISNAN)
|
rlm@0
|
257 IF(NOT HAVE__ISNAN)
|
rlm@0
|
258 MESSAGE(FATAL_ERROR "No isnan function found, please report!")
|
rlm@0
|
259 ENDIF()
|
rlm@0
|
260
|
rlm@0
|
261 ADD_DEFINITIONS(-Disnan=_isnan)
|
rlm@0
|
262 ENDIF()
|
rlm@0
|
263
|
rlm@0
|
264
|
rlm@0
|
265 # Check for the dlopen API (for dynamicly loading backend libs)
|
rlm@0
|
266 IF(DLOPEN)
|
rlm@0
|
267 CHECK_INCLUDE_FILE(dlfcn.h HAVE_DLFCN_H)
|
rlm@0
|
268 IF(HAVE_DLFCN_H)
|
rlm@0
|
269 CHECK_LIBRARY_EXISTS(dl dlopen "" HAVE_LIBDL)
|
rlm@0
|
270 IF(HAVE_LIBDL)
|
rlm@0
|
271 SET(EXTRA_LIBS dl ${EXTRA_LIBS})
|
rlm@0
|
272 ENDIF()
|
rlm@0
|
273 ENDIF()
|
rlm@0
|
274 ENDIF()
|
rlm@0
|
275
|
rlm@0
|
276 # Check if we have Windows headers
|
rlm@0
|
277 CHECK_INCLUDE_FILE(windows.h HAVE_WINDOWS_H -D_WIN32_WINNT=0x0500)
|
rlm@0
|
278 IF(NOT HAVE_WINDOWS_H)
|
rlm@0
|
279 CHECK_FUNCTION_EXISTS(gettimeofday HAVE_GETTIMEOFDAY)
|
rlm@0
|
280 IF(NOT HAVE_GETTIMEOFDAY)
|
rlm@0
|
281 MESSAGE(FATAL_ERROR "No timing function found!")
|
rlm@0
|
282 ENDIF()
|
rlm@0
|
283
|
rlm@0
|
284 CHECK_FUNCTION_EXISTS(nanosleep HAVE_NANOSLEEP)
|
rlm@0
|
285 IF(NOT HAVE_NANOSLEEP)
|
rlm@0
|
286 MESSAGE(FATAL_ERROR "No sleep function found!")
|
rlm@0
|
287 ENDIF()
|
rlm@0
|
288
|
rlm@0
|
289 CHECK_C_COMPILER_FLAG(-pthread HAVE_PTHREAD)
|
rlm@0
|
290 IF(HAVE_PTHREAD)
|
rlm@0
|
291 ADD_DEFINITIONS(-pthread)
|
rlm@0
|
292 SET(EXTRA_LIBS ${EXTRA_LIBS} -pthread)
|
rlm@0
|
293 ENDIF()
|
rlm@0
|
294
|
rlm@0
|
295 # We need pthreads outside of Windows
|
rlm@0
|
296 CHECK_INCLUDE_FILE(pthread.h HAVE_PTHREAD_H)
|
rlm@0
|
297 IF(NOT HAVE_PTHREAD_H)
|
rlm@0
|
298 MESSAGE(FATAL_ERROR "PThreads is required for non-Windows builds!")
|
rlm@0
|
299 ENDIF()
|
rlm@0
|
300 # Some systems need pthread_np.h to get recursive mutexes
|
rlm@0
|
301 CHECK_INCLUDE_FILES("pthread.h;pthread_np.h" HAVE_PTHREAD_NP_H)
|
rlm@0
|
302
|
rlm@0
|
303 # _GNU_SOURCE is needed on some systems for extra attributes, and
|
rlm@0
|
304 # _REENTRANT is needed for libc thread-safety
|
rlm@0
|
305 ADD_DEFINITIONS(-D_GNU_SOURCE=1)
|
rlm@0
|
306 CHECK_LIBRARY_EXISTS(pthread pthread_create "" HAVE_LIBPTHREAD)
|
rlm@0
|
307 IF(HAVE_LIBPTHREAD)
|
rlm@0
|
308 SET(EXTRA_LIBS pthread ${EXTRA_LIBS})
|
rlm@0
|
309 ENDIF()
|
rlm@0
|
310
|
rlm@0
|
311 CHECK_LIBRARY_EXISTS(pthread pthread_setschedparam "" HAVE_PTHREAD_SETSCHEDPARAM)
|
rlm@0
|
312
|
rlm@0
|
313 CHECK_LIBRARY_EXISTS(rt clock_gettime "" HAVE_LIBRT)
|
rlm@0
|
314 IF(HAVE_LIBRT)
|
rlm@0
|
315 SET(EXTRA_LIBS rt ${EXTRA_LIBS})
|
rlm@0
|
316 ENDIF()
|
rlm@0
|
317 ENDIF()
|
rlm@0
|
318
|
rlm@0
|
319 # Check for a 64-bit type
|
rlm@0
|
320 CHECK_INCLUDE_FILE(stdint.h HAVE_STDINT_H)
|
rlm@0
|
321 IF(NOT HAVE_STDINT_H)
|
rlm@0
|
322 IF(HAVE_WINDOWS_H)
|
rlm@0
|
323 CHECK_C_SOURCE_COMPILES("\#define _WIN32_WINNT 0x0500
|
rlm@0
|
324 \#include <windows.h>
|
rlm@0
|
325 __int64 foo;
|
rlm@0
|
326 int main() {return 0;}" HAVE___INT64)
|
rlm@0
|
327 ENDIF()
|
rlm@0
|
328 IF(NOT HAVE___INT64)
|
rlm@0
|
329 IF(NOT SIZEOF_LONG MATCHES "8")
|
rlm@0
|
330 IF(NOT SIZEOF_LONG_LONG MATCHES "8")
|
rlm@0
|
331 MESSAGE(FATAL_ERROR "No 64-bit types found, please report!")
|
rlm@0
|
332 ENDIF()
|
rlm@0
|
333 ENDIF()
|
rlm@0
|
334 ENDIF()
|
rlm@0
|
335 ENDIF()
|
rlm@0
|
336
|
rlm@0
|
337 # Windows needs winmm for timeGetTime, even if the backend is disabled
|
rlm@0
|
338 CHECK_SHARED_FUNCTION_EXISTS(timeGetTime "windows.h;mmsystem.h" winmm "" HAVE_LIBWINMM)
|
rlm@0
|
339 IF(HAVE_LIBWINMM)
|
rlm@0
|
340 SET(EXTRA_LIBS winmm ${EXTRA_LIBS})
|
rlm@0
|
341 SET(PKG_CONFIG_LIBS ${PKG_CONFIG_LIBS} -lwinmm)
|
rlm@0
|
342 ENDIF()
|
rlm@0
|
343
|
rlm@0
|
344
|
rlm@0
|
345 SET(OPENAL_OBJS OpenAL32/alAuxEffectSlot.c
|
rlm@0
|
346 OpenAL32/alBuffer.c
|
rlm@0
|
347 OpenAL32/alEffect.c
|
rlm@0
|
348 OpenAL32/alError.c
|
rlm@0
|
349 OpenAL32/alExtension.c
|
rlm@0
|
350 OpenAL32/alFilter.c
|
rlm@0
|
351 OpenAL32/alListener.c
|
rlm@0
|
352 OpenAL32/alSource.c
|
rlm@0
|
353 OpenAL32/alState.c
|
rlm@0
|
354 OpenAL32/alThunk.c
|
rlm@0
|
355 )
|
rlm@0
|
356 SET(ALC_OBJS Alc/ALc.c
|
rlm@0
|
357 Alc/ALu.c
|
rlm@0
|
358 Alc/alcConfig.c
|
rlm@0
|
359 Alc/alcDedicated.c
|
rlm@0
|
360 Alc/alcEcho.c
|
rlm@0
|
361 Alc/alcModulator.c
|
rlm@0
|
362 Alc/alcReverb.c
|
rlm@0
|
363 Alc/alcRing.c
|
rlm@0
|
364 Alc/alcThread.c
|
rlm@0
|
365 Alc/bs2b.c
|
rlm@0
|
366 Alc/helpers.c
|
rlm@0
|
367 Alc/hrtf.c
|
rlm@0
|
368 Alc/mixer.c
|
rlm@0
|
369 Alc/panning.c
|
rlm@0
|
370 # Default backends, always available
|
rlm@0
|
371 Alc/backends/loopback.c
|
rlm@0
|
372 Alc/backends/null.c
|
rlm@0
|
373 # RLM: add send device
|
rlm@0
|
374 Alc/backends/send.c
|
rlm@0
|
375 )
|
rlm@0
|
376
|
rlm@0
|
377 SET(BACKENDS "")
|
rlm@0
|
378
|
rlm@0
|
379
|
rlm@0
|
380
|
rlm@0
|
381 SET(ALC_OBJS ${ALC_OBJS} Alc/backends/send.c)
|
rlm@0
|
382 SET(BACKENDS "${BACKENDS} Send,")
|
rlm@0
|
383
|
rlm@0
|
384
|
rlm@0
|
385 # This is always available
|
rlm@0
|
386 SET(BACKENDS "${BACKENDS} Null")
|
rlm@0
|
387
|
rlm@0
|
388 IF(LIBTYPE STREQUAL "STATIC")
|
rlm@0
|
389 ADD_DEFINITIONS(-DAL_LIBTYPE_STATIC)
|
rlm@0
|
390 SET(PKG_CONFIG_CFLAGS -DAL_LIBTYPE_STATIC ${PKG_CONFIG_CFLAGS})
|
rlm@0
|
391 ENDIF()
|
rlm@0
|
392
|
rlm@0
|
393 # Needed for openal.pc.in
|
rlm@0
|
394 SET(prefix ${CMAKE_INSTALL_PREFIX})
|
rlm@0
|
395 SET(exec_prefix "\${prefix}")
|
rlm@0
|
396 SET(libdir "\${exec_prefix}/lib${LIB_SUFFIX}")
|
rlm@0
|
397 SET(bindir "\${exec_prefix}/bin")
|
rlm@0
|
398 SET(includedir "\${prefix}/include")
|
rlm@0
|
399 SET(PACKAGE_VERSION "${LIB_VERSION}")
|
rlm@0
|
400
|
rlm@0
|
401 # End configuration
|
rlm@0
|
402 CONFIGURE_FILE(
|
rlm@0
|
403 "${OpenAL_SOURCE_DIR}/config.h.in"
|
rlm@0
|
404 "${OpenAL_BINARY_DIR}/config.h")
|
rlm@0
|
405 CONFIGURE_FILE(
|
rlm@0
|
406 "${OpenAL_SOURCE_DIR}/openal.pc.in"
|
rlm@0
|
407 "${OpenAL_BINARY_DIR}/openal.pc"
|
rlm@0
|
408 @ONLY)
|
rlm@0
|
409
|
rlm@0
|
410 # Build a library
|
rlm@0
|
411 ADD_LIBRARY(${LIBNAME} ${LIBTYPE} ${OPENAL_OBJS} ${ALC_OBJS})
|
rlm@0
|
412 SET_TARGET_PROPERTIES(${LIBNAME} PROPERTIES DEFINE_SYMBOL AL_BUILD_LIBRARY
|
rlm@0
|
413 COMPILE_FLAGS -DAL_ALEXT_PROTOTYPES
|
rlm@0
|
414 VERSION ${LIB_VERSION}.0
|
rlm@0
|
415 SOVERSION ${LIB_MAJOR_VERSION})
|
rlm@0
|
416 IF(WIN32 AND NOT LIBTYPE STREQUAL "STATIC")
|
rlm@0
|
417 SET_TARGET_PROPERTIES(${LIBNAME} PROPERTIES PREFIX "")
|
rlm@0
|
418 ENDIF()
|
rlm@0
|
419
|
rlm@0
|
420 # RLM link jni the dumb way for now:
|
rlm@0
|
421
|
rlm@0
|
422 INCLUDE_DIRECTORIES("/opt/jdk/include/")
|
rlm@0
|
423 INCLUDE_DIRECTORIES("/opt/jdk/include/linux")
|
rlm@0
|
424 TARGET_LINK_LIBRARIES(${LIBNAME} ${EXTRA_LIBS})
|
rlm@0
|
425
|
rlm@0
|
426 # Add an install target here
|
rlm@0
|
427 INSTALL(TARGETS ${LIBNAME}
|
rlm@0
|
428 RUNTIME DESTINATION bin
|
rlm@0
|
429 LIBRARY DESTINATION "lib${LIB_SUFFIX}"
|
rlm@0
|
430 ARCHIVE DESTINATION "lib${LIB_SUFFIX}"
|
rlm@0
|
431 )
|
rlm@0
|
432 INSTALL(FILES include/AL/al.h
|
rlm@0
|
433 include/AL/alc.h
|
rlm@0
|
434 include/AL/alext.h
|
rlm@0
|
435 include/AL/efx.h
|
rlm@0
|
436 include/AL/efx-creative.h
|
rlm@0
|
437 DESTINATION include/AL
|
rlm@0
|
438 )
|
rlm@0
|
439 INSTALL(FILES "${OpenAL_BINARY_DIR}/openal.pc"
|
rlm@0
|
440 DESTINATION "lib${LIB_SUFFIX}/pkgconfig")
|
rlm@0
|
441
|
rlm@0
|
442
|
rlm@0
|
443 MESSAGE(STATUS "")
|
rlm@0
|
444 MESSAGE(STATUS "Building OpenAL with support for the following backends:")
|
rlm@0
|
445 MESSAGE(STATUS " ${BACKENDS}")
|
rlm@0
|
446 MESSAGE(STATUS "")
|
rlm@0
|
447
|
rlm@0
|
448 # Install alsoft.conf configuration file
|
rlm@0
|
449 IF(ALSOFT_CONFIG)
|
rlm@0
|
450 INSTALL(FILES alsoftrc.sample
|
rlm@0
|
451 DESTINATION /etc/openal
|
rlm@0
|
452 RENAME alsoft.conf
|
rlm@0
|
453 )
|
rlm@0
|
454 MESSAGE(STATUS "Installing sample alsoft.conf")
|
rlm@0
|
455 MESSAGE(STATUS "")
|
rlm@0
|
456 ENDIF()
|
rlm@0
|
457
|
rlm@0
|
458 IF(UTILS)
|
rlm@0
|
459 ADD_EXECUTABLE(openal-info utils/openal-info.c)
|
rlm@0
|
460 TARGET_LINK_LIBRARIES(openal-info ${LIBNAME})
|
rlm@0
|
461 INSTALL(TARGETS openal-info
|
rlm@0
|
462 RUNTIME DESTINATION bin
|
rlm@0
|
463 LIBRARY DESTINATION "lib${LIB_SUFFIX}"
|
rlm@0
|
464 ARCHIVE DESTINATION "lib${LIB_SUFFIX}"
|
rlm@0
|
465 )
|
rlm@0
|
466 MESSAGE(STATUS "Building utility programs")
|
rlm@0
|
467 MESSAGE(STATUS "")
|
rlm@0
|
468 ENDIF()
|
rlm@0
|
469
|
rlm@0
|
470
|