annotate CMakeLists.txt @ 2:82b9267a3e19

removed all backends except for the send backend
author Robert McIntyre <rlm@mit.edu>
date Tue, 25 Oct 2011 13:11:31 -0700
parents f9476ff7637e
children 99df34265b40
rev   line source
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