Remove the revision number from the library
[alure.git] / CMakeLists.txt
blob4a9b71424175e6c43ea8a709b1953b9459160a71
1 # CMakeLists.txt for ALURE
2 CMAKE_MINIMUM_REQUIRED(VERSION 2.4)
4 IF(COMMAND CMAKE_POLICY)
5     CMAKE_POLICY(SET CMP0003 NEW)
6 ENDIF(COMMAND CMAKE_POLICY)
8 SET(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake")
10 INCLUDE(CheckCCompilerFlag)
11 INCLUDE(CheckCSourceCompiles)
12 INCLUDE(CheckFunctionExists)
13 INCLUDE(CheckIncludeFile)
14 INCLUDE(CheckIncludeFiles)
15 INCLUDE(CheckLibraryExists)
16 INCLUDE(CheckSharedLibraryExists)
17 INCLUDE(FindPkgConfig)
18 INCLUDE(UsePkgConfig)
19 INCLUDE(CheckFileOffsetBits)
21 PROJECT(ALURE)
23 IF(WIN32)
24     SET(LIBNAME ALURE32)
25 ELSE(WIN32)
26     SET(LIBNAME alure)
27 ENDIF(WIN32)
29 SET(LIB_MAJOR_VERSION "1")
30 SET(LIB_MINOR_VERSION "0")
31 SET(LIB_VERSION "${LIB_MAJOR_VERSION}.${LIB_MINOR_VERSION}")
34 INCLUDE_DIRECTORIES(include "${ALURE_BINARY_DIR}")
37 OPTION(BUILD_SHARED "Build the shared version of the library" ON)
38 OPTION(BUILD_STATIC "Build the static version of the library" ON)
40 IF(NOT BUILD_SHARED AND NOT BUILD_STATIC)
41     MESSAGE(FATAL_ERROR "No libtype being built!")
42 ENDIF(NOT BUILD_SHARED AND NOT BUILD_STATIC)
44 IF(NOT CMAKE_BUILD_TYPE)
45     SET(CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING
46         "Choose the type of build, options are: Debug Release RelWithDebInfo MinSizeRel."
47         FORCE)
48 ENDIF(NOT CMAKE_BUILD_TYPE)
49 IF(NOT DEFINED CMAKE_DEBUG_POSTFIX)
50     SET(CMAKE_DEBUG_POSTFIX "" CACHE STRING
51         "Library postfix for debug builds. Normally left blank."
52         FORCE)
53 ENDIF(NOT DEFINED CMAKE_DEBUG_POSTFIX)
56 CHECK_SHARED_LIBRARY_EXISTS(stdc++ memset "" HAS_STDCXX)
57 IF(HAS_STDCXX)
58     SET(EXTRA_LIBS stdc++ ${EXTRA_LIBS})
59 ENDIF(HAS_STDCXX)
61 CHECK_SHARED_LIBRARY_EXISTS(m pow "" HAS_LIBM)
62 IF(HAS_LIBM)
63     SET(EXTRA_LIBS m ${EXTRA_LIBS})
64 ENDIF(HAS_LIBM)
66 CHECK_FILE_OFFSET_BITS()
67 IF(_FILE_OFFSET_BITS)
68     ADD_DEFINITIONS(-D_FILE_OFFSET_BITS=${_FILE_OFFSET_BITS})
69     SET(CMAKE_REQUIRED_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS} -D_FILE_OFFSET_BITS=${_FILE_OFFSET_BITS})
70 ENDIF(_FILE_OFFSET_BITS)
72 CHECK_FUNCTION_EXISTS(fseeko HAVE_FSEEKO)
73 IF(NOT HAVE_FSEEKO)
74     CHECK_FUNCTION_EXISTS(_fseeki64 HAVE__FSEEKI64)
75 ENDIF(NOT HAVE_FSEEKO)
77 IF(MSVC)
78     # ???
79 ELSE(MSVC)
80     IF(NOT WIN32)
81         CHECK_C_SOURCE_COMPILES("int foo() __attribute__((constructor));
82                                  int main() {return 0;}" HAVE_GCC_CONSTRUCTOR)
84         CHECK_C_COMPILER_FLAG(-fvisibility=hidden HAVE_GCC_VISIBILITY)
85         IF(HAVE_GCC_VISIBILITY)
86             ADD_DEFINITIONS(-fvisibility=hidden)
87         ENDIF(HAVE_GCC_VISIBILITY)
88     ENDIF(NOT WIN32)
90     CHECK_C_COMPILER_FLAG(-Wextra HAVE_WEXTRA)
91     IF(HAVE_WEXTRA)
92         ADD_DEFINITIONS(-Wextra)
93     ENDIF(HAVE_WEXTRA)
94     ADD_DEFINITIONS(-Wall)
96     CHECK_C_COMPILER_FLAG(-funswitch-loops HAVE_FUNSWITCH_LOOPS)
97     IF(HAVE_FUNSWITCH_LOOPS)
98         ADD_DEFINITIONS(-funswitch-loops)
99     ENDIF(HAVE_FUNSWITCH_LOOPS)
100 ENDIF(MSVC)
103 CHECK_INCLUDE_FILE(windows.h HAVE_WINDOWS_H -D_WIN32_WINNT=0x0500)
104 IF(NOT HAVE_WINDOWS_H)
105     CHECK_C_COMPILER_FLAG(-pthread HAVE_PTHREAD)
106     IF(HAVE_PTHREAD)
107         ADD_DEFINITIONS(-pthread)
108         SET(EXTRA_LIBS ${EXTRA_LIBS} -pthread)
109     ENDIF(HAVE_PTHREAD)
111     # We need pthreads outside of Windows
112     CHECK_INCLUDE_FILE(pthread.h HAVE_PTHREAD_H)
113     IF(NOT HAVE_PTHREAD_H)
114         MESSAGE(FATAL_ERROR "PThreads is required for non-Windows builds!")
115     ENDIF()
116     # Some systems need pthread_np.h to get recursive mutexes
117     CHECK_INCLUDE_FILES("pthread.h;pthread_np.h" HAVE_PTHREAD_NP_H)
119     # _GNU_SOURCE is needed on some systems for extra attributes, and
120     # _REENTRANT is needed for libc thread-safety
121     ADD_DEFINITIONS(-D_GNU_SOURCE=1)
122     CHECK_FUNCTION_EXISTS(pthread_create HAS_PTHREAD_CREATE)
123     IF(NOT HAS_PTHREAD_CREATE)
124         CHECK_SHARED_LIBRARY_EXISTS(pthread pthread_create "" HAVE_LIBPTHREAD)
125         IF(NOT HAVE_LIBPTHREAD)
126             MESSAGE(FATAL_ERROR "pthread_create not found on non-Windows target!")
127         ENDIF(NOT HAVE_LIBPTHREAD)
128         SET(EXTRA_LIBS pthread ${EXTRA_LIBS})
129     ENDIF(NOT HAS_PTHREAD_CREATE)
131     CHECK_FUNCTION_EXISTS(nanosleep HAVE_NANOSLEEP)
132     IF(NOT HAVE_NANOSLEEP)
133         MESSAGE(FATAL_ERROR "No sleep function found!")
134     ENDIF(NOT HAVE_NANOSLEEP)
135 ENDIF(NOT HAVE_WINDOWS_H)
137 CHECK_INCLUDE_FILE(sys/types.h HAVE_SYS_TYPES_H)
138 CHECK_INCLUDE_FILE(sys/wait.h HAVE_SYS_WAIT_H)
139 CHECK_INCLUDE_FILE(signal.h HAVE_SIGNAL_H)
140 CHECK_INCLUDE_FILE(dlfcn.h HAVE_DLFCN_H)
142 IF(HAVE_DLFCN_H)
143     CHECK_SHARED_LIBRARY_EXISTS(dl dlopen "" HAVE_LIBDL)
144     IF(HAVE_LIBDL)
145         SET(EXTRA_LIBS dl ${EXTRA_LIBS})
146     ENDIF(HAVE_LIBDL)
147 ENDIF(HAVE_DLFCN_H)
149 OPTION(DYNLOAD    "Dynamically load support libs at run-time" ON)
150 OPTION(SNDFILE    "SoundFile support (for various formats)" ON)
151 OPTION(VORBIS     "VorbisFile support (for Ogg Vorbis)"  ON)
152 OPTION(FLAC       "FLAC support (for FLAC and Ogg FLAC)" ON)
153 OPTION(MPG123     "MPG123 support (for MP1/MP2/MP3)" ON)
154 OPTION(DUMB       "DUMB support (for IT/XM/S3M/MOD)" ON)
155 OPTION(MODPLUG    "ModPlug support (for IT/XM/S3M/MOD)" OFF)
156 OPTION(FLUIDSYNTH "FluidSynth support (for MID)" ON)
158 IF(WIN32)
159     ADD_DEFINITIONS(-D_WIN32)
161     IF(CMAKE_SIZEOF_VOID_P MATCHES "8")
162         SET(WIN_TYPE Win64)
163         SET(XBITS x64)
164     ELSE(CMAKE_SIZEOF_VOID_P MATCHES "8")
165         SET(WIN_TYPE Win32)
166         SET(XBITS x86)
167     ENDIF(CMAKE_SIZEOF_VOID_P MATCHES "8")
169     SET(OPENAL_SEARCH_PATHS
170         ENV ALSDK_DIR
171         ENV MINGDIR
172         "C:/Program Files/OpenAL 1.1 SDK"
173         "C:/Program Files (x86)/OpenAL 1.1 SDK"
174         "E:/Programs/Dev/OpenAL"
175         "E:/Program Files (x86)/OpenAL 1.1 SDK" )
177     FIND_PATH(OPENAL_INCLUDE_DIR al.h
178               PATHS ${OPENAL_SEARCH_PATHS}
179               PATH_SUFFIXES include include/AL )
180     IF(OPENAL_INCLUDE_DIR)
181         INCLUDE_DIRECTORIES(${OPENAL_INCLUDE_DIR})
182         FIND_LIBRARY(OPENAL_LIBRARIES OpenAL32
183                      PATHS ${OPENAL_SEARCH_PATHS}
184                      PATH_SUFFIXES lib libs/${WIN_TYPE} )
185     ENDIF(OPENAL_INCLUDE_DIR)
187     IF(NOT OPENAL_LIBRARIES)
188         MESSAGE(FATAL_ERROR "OpenAL not found!\nPlease try setting the ALSDK_DIR environment variable and try again.")
189     ENDIF(NOT OPENAL_LIBRARIES)
191     MESSAGE(STATUS "OpenAL include: ${OPENAL_INCLUDE_DIR}")
192     MESSAGE(STATUS "OpenAL lib: ${OPENAL_LIBRARIES}")
193 ELSE(WIN32)
194     IF(NOT HAVE_DLFCN_H OR NOT HAVE_LIBDL)
195         SET(DYNLOAD OFF)
196     ENDIF(NOT HAVE_DLFCN_H OR NOT HAVE_LIBDL)
198     PKG_CHECK_MODULES(OPENAL openal)
199     IF(NOT OPENAL_FOUND)
200         IF(APPLE)
201             CHECK_INCLUDE_FILE(OpenAL/al.h HAVE_OPENAL_AL_H)
202             IF(HAVE_OPENAL_AL_H)
203                 SET(OPENAL_LIBRARIES "-framework OpenAL")
204                 SET(HAS_OPENAL 1)
205             ENDIF(HAVE_OPENAL_AL_H)
206         ELSE(APPLE)
207             CHECK_INCLUDE_FILE(AL/al.h HAVE_AL_AL_H)
208             IF(HAVE_AL_AL_H)
209                 CHECK_SHARED_LIBRARY_EXISTS(openal alcOpenDevice "" HAS_OPENAL)
210                 IF(HAS_OPENAL)
211                     SET(OPENAL_LIBRARIES openal)
212                 ENDIF(HAS_OPENAL)
213             ENDIF(HAVE_AL_AL_H)
214         ENDIF(APPLE)
215         IF(NOT HAS_OPENAL)
216             MESSAGE(FATAL_ERROR "OpenAL not found!")
217         ENDIF(NOT HAS_OPENAL)
218     ELSE(NOT OPENAL_FOUND)
219         INCLUDE_DIRECTORIES(${OPENAL_INCLUDE_DIRS})
220         LINK_DIRECTORIES(${OPENAL_LIBRARY_DIRS})
221     ENDIF(NOT OPENAL_FOUND)
222 ENDIF(WIN32)
224 # SndFile support
225 IF(SNDFILE)
226     PKG_CHECK_MODULES(SNDFILE sndfile)
227     IF(NOT SNDFILE_FOUND)
228         CHECK_INCLUDE_FILE(sndfile.h HAVE_SNDFILE_H)
229         IF(HAVE_SNDFILE_H)
230             CHECK_SHARED_LIBRARY_EXISTS(sndfile sf_open "" HAVE_LIBSNDFILE)
231             CHECK_SHARED_LIBRARY_EXISTS(libsndfile-1 sf_open "" HAVE_LIBSNDFILE1)
232             IF(DYNLOAD OR HAVE_LIBSNDFILE OR HAVE_LIBSNDFILE1)
233                 SET(HAS_SNDFILE 1)
234                 IF(HAVE_LIBSNDFILE)
235                     SET(SNDFILE_LIBRARIES "sndfile")
236                 ELSEIF(HAVE_LIBSNDFILE1)
237                     SET(SNDFILE_LIBRARIES "libsndfile-1")
238                 ENDIF(HAVE_LIBSNDFILE)
239             ENDIF(DYNLOAD OR HAVE_LIBSNDFILE OR HAVE_LIBSNDFILE1)
240         ENDIF(HAVE_SNDFILE_H)
241     ELSE(NOT SNDFILE_FOUND)
242         SET(HAS_SNDFILE 1)
243         INCLUDE_DIRECTORIES(${SNDFILE_INCLUDE_DIRS})
244         LINK_DIRECTORIES(${SNDFILE_LIBRARY_DIRS})
245     ENDIF(NOT SNDFILE_FOUND)
246 ELSE(SNDFILE)
247     SET(SNDFILE_LIBRARIES "")
248 ENDIF(SNDFILE)
250 # Vorbis support
251 IF(VORBIS)
252     PKG_CHECK_MODULES(VORBISFILE vorbisfile)
253     IF(NOT VORBISFILE_FOUND)
254         CHECK_INCLUDE_FILE(vorbis/vorbisfile.h HAVE_VORBIS_VORBISFILE_H)
255         IF(HAVE_VORBIS_VORBISFILE_H)
256             CHECK_SHARED_LIBRARY_EXISTS(vorbisfile ov_open "" HAVE_LIBVORBISFILE)
257             IF(DYNLOAD OR HAVE_LIBVORBISFILE)
258                 SET(HAS_VORBISFILE 1)
259                 IF(HAVE_LIBVORBISFILE)
260                     SET(VORBISFILE_LIBRARIES "vorbisfile")
261                 ENDIF(HAVE_LIBVORBISFILE)
262             ENDIF(DYNLOAD OR HAVE_LIBVORBISFILE)
263         ENDIF(HAVE_VORBIS_VORBISFILE_H)
264     ELSE(NOT VORBISFILE_FOUND)
265         SET(HAS_VORBISFILE 1)
266         INCLUDE_DIRECTORIES(${VORBISFILE_INCLUDE_DIRS})
267         LINK_DIRECTORIES(${VORBISFILE_LIBRARY_DIRS})
268     ENDIF(NOT VORBISFILE_FOUND)
269 ELSE(VORBIS)
270     SET(VORBISFILE_LIBRARIES "")
271 ENDIF(VORBIS)
273 # FLAC support
274 IF(FLAC)
275     #PKG_CHECK_MODULES(LIBFLAC flac)
276     #IF(NOT LIBFLAC_FOUND)
277         CHECK_INCLUDE_FILE(FLAC/all.h HAVE_FLAC_ALL_H)
278         IF(HAVE_FLAC_ALL_H)
279             CHECK_SHARED_LIBRARY_EXISTS(FLAC FLAC__stream_decoder_new "" HAVE_LIBFLAC)
280             IF(DYNLOAD OR HAVE_LIBFLAC)
281                 SET(HAS_FLAC 1)
282                 IF(HAVE_LIBFLAC)
283                     SET(LIBFLAC_LIBRARIES "FLAC")
284                 ENDIF(HAVE_LIBFLAC)
285             ENDIF(DYNLOAD OR HAVE_LIBFLAC)
286         ENDIF(HAVE_FLAC_ALL_H)
287     #ELSE(NOT LIBFLAC)
288     #    SET(HAS_FLAC 1)
289     #    INCLUDE_DIRECTORIES(${LIBFLAC_INCLUDE_DIRS})
290     #    LINK_DIRECTORIES(${LIBFLAC_LIBRARY_DIRS})
291     #ENDIF(NOT LIBFLAC_FOUND)
292 ELSE(FLAC)
293     SET(LIBFLAC_LIBRARIES "")
294 ENDIF(FLAC)
296 # MPG123 support
297 IF(MPG123)
298     PKG_CHECK_MODULES(MPG123 libmpg123)
299     IF(NOT MPG123_FOUND)
300         CHECK_INCLUDE_FILE(mpg123.h HAVE_MPG123_H)
301         IF(HAVE_MPG123_H)
302             CHECK_SHARED_LIBRARY_EXISTS(mpg123 mpg123_init "" HAVE_LIBMPG123)
303             IF(DYNLOAD OR HAVE_LIBMPG123)
304                 SET(HAS_MPG123 1)
305                 IF(HAVE_LIBMPG123)
306                     SET(MPG123_LIBRARIES "mpg123")
307                 ENDIF(HAVE_LIBMPG123)
308             ENDIF(DYNLOAD OR HAVE_LIBMPG123)
309         ENDIF(HAVE_MPG123_H)
310     ELSE(NOT MPG123_FOUND)
311         SET(HAS_MPG123 1)
312         INCLUDE_DIRECTORIES(${MPG123_INCLUDE_DIRS})
313         LINK_DIRECTORIES(${MPG123_LIBRARY_DIRS})
314     ENDIF(NOT MPG123_FOUND)
315 ELSE(MPG123)
316     SET(MPG123_LIBRARIES "")
317 ENDIF(MPG123)
319 # DUMB support
320 IF(DUMB)
321     CHECK_INCLUDE_FILE(dumb.h HAVE_DUMB_H)
322     IF(HAVE_DUMB_H)
323         IF(HAS_LIBM)
324             CHECK_LIBRARY_EXISTS("dumb;m" dumbfile_open_ex "" HAVE_LIBDUMB)
325         ELSE(HAS_LIBM)
326             CHECK_LIBRARY_EXISTS(dumb dumbfile_open_ex "" HAVE_LIBDUMB)
327         ENDIF(HAS_LIBM)
328         IF(DYNLOAD OR HAVE_LIBDUMB)
329             SET(HAS_DUMB 1)
330             IF(HAVE_LIBDUMB)
331                 SET(DUMB_LIBRARIES dumb)
332             ENDIF(HAVE_LIBDUMB)
333         ENDIF(DYNLOAD OR HAVE_LIBDUMB)
334     ENDIF(HAVE_DUMB_H)
335 ELSE(DUMB)
336     SET(DUMB_LIBRARIES "")
337 ENDIF(DUMB)
339 # ModPlug support
340 IF(MODPLUG)
341     PKG_CHECK_MODULES(MODPLUG libmodplug)
342     IF(NOT MODPLUG_FOUND)
343         CHECK_INCLUDE_FILE(modplug.h HAVE_MODPLUG_H)
344         IF(HAVE_MODPLUG_H)
345             CHECK_SHARED_LIBRARY_EXISTS(modplug ModPlug_Load "" HAVE_LIBMODPLUG)
346             IF(DYNLOAD OR HAVE_LIBMODPLUG)
347                 SET(HAS_MODPLUG 1)
348                 IF(HAVE_LIBMODPLUG)
349                     SET(MODPLUG_LIBRARIES "modplug")
350                 ENDIF(HAVE_LIBMODPLUG)
351             ENDIF(DYNLOAD OR HAVE_LIBMODPLUG)
352         ENDIF(HAVE_MODPLUG_H)
353     ELSE(NOT MODPLUG_FOUND)
354         SET(HAS_MODPLUG 1)
355         INCLUDE_DIRECTORIES(${MODPLUG_INCLUDE_DIRS})
356         LINK_DIRECTORIES(${MODPLUG_LIBRARY_DIRS})
357     ENDIF(NOT MODPLUG_FOUND)
358 ELSE(MODPLUG)
359     SET(MODPLUG_LIBRARIES "")
360 ENDIF(MODPLUG)
362 # FluidSynth support
363 IF(FLUIDSYNTH)
364     PKG_CHECK_MODULES(FLUIDSYNTH fluidsynth>=1.1.1)
365     IF(NOT FLUIDSYNTH_FOUND)
366         CHECK_INCLUDE_FILE(fluidsynth.h HAVE_FLUIDSYNTH_H)
367         IF(HAVE_FLUIDSYNTH_H)
368             CHECK_SHARED_LIBRARY_EXISTS(fluidsynth new_fluid_synth "" HAVE_LIBFLUIDSYNTH)
369             IF(DYNLOAD OR HAVE_LIBFLUIDSYNTH)
370                 SET(HAS_FLUIDSYNTH 1)
371                 IF(HAVE_LIBFLUIDSYNTH)
372                     SET(FLUIDSYNTH_LIBRARIES "fluidsynth")
373                 ENDIF(HAVE_LIBFLUIDSYNTH)
374             ENDIF(DYNLOAD OR HAVE_LIBFLUIDSYNTH)
375         ENDIF(HAVE_FLUIDSYNTH_H)
376     ELSE(NOT FLUIDSYNTH_FOUND)
377         SET(HAS_FLUIDSYNTH 1)
378         INCLUDE_DIRECTORIES(${FLUIDSYNTH_INCLUDE_DIRS})
379         LINK_DIRECTORIES(${FLUIDSYNTH_LIBRARY_DIRS})
380     ENDIF(NOT FLUIDSYNTH_FOUND)
381 ELSE(FLUIDSYNTH)
382     SET(FLUIDSYNTH_LIBRARIES "")
383 ENDIF(FLUIDSYNTH)
386 IF(NOT DYNLOAD)
387     SET(EXTRA_LIBS ${SNDFILE_LIBRARIES} ${VORBISFILE_LIBRARIES} ${LIBFLAC_LIBRARIES} ${MPG123_LIBRARIES} ${DUMB_LIBRARIES} ${MODPLUG_LIBRARIES} ${FLUIDSYNTH_LIBRARIES} ${EXTRA_LIBS})
388 ELSE(NOT DYNLOAD)
389     ADD_DEFINITIONS(-DDYNLOAD=1)
390 ENDIF(NOT DYNLOAD)
392 # For alure.pc.in
393 SET(prefix ${CMAKE_INSTALL_PREFIX})
394 SET(exec_prefix "\${prefix}")
395 SET(libdir "\${exec_prefix}/lib${LIB_SUFFIX}")
396 SET(bindir "\${exec_prefix}/bin")
397 SET(includedir "\${prefix}/include")
398 SET(PKG_CONFIG_REQUIRES openal)
399 SET(PACKAGE_VERSION "${LIB_VERSION}")
401 # End configuration
402 CONFIGURE_FILE(
403     "${ALURE_SOURCE_DIR}/config.h.in"
404     "${ALURE_BINARY_DIR}/config.h")
405 IF(BUILD_SHARED)
406     CONFIGURE_FILE(
407         "${ALURE_SOURCE_DIR}/alure.pc.in"
408         "${ALURE_BINARY_DIR}/alure.pc"
409         @ONLY)
410 ENDIF(BUILD_SHARED)
411 IF(BUILD_STATIC)
412     CONFIGURE_FILE(
413         "${ALURE_SOURCE_DIR}/alure-static.pc.in"
414         "${ALURE_BINARY_DIR}/alure-static.pc"
415         @ONLY)
416 ENDIF(BUILD_STATIC)
418 ADD_DEFINITIONS(-DHAVE_CONFIG_H)
421 SET(ALURE_OBJS  src/alure.cpp
422                 src/buffer.cpp
423                 src/istream.cpp
424                 src/stream.cpp
425                 src/streamdec.cpp
426                 src/streamplay.cpp
427                 src/codec_wav.cpp
428                 src/codec_aiff.cpp
430 IF(HAS_VORBISFILE)
431     SET(ALURE_OBJS ${ALURE_OBJS} src/codec_vorbisfile.cpp)
432 ENDIF(HAS_VORBISFILE)
433 IF(HAS_FLAC)
434     SET(ALURE_OBJS ${ALURE_OBJS} src/codec_flac.cpp)
435 ENDIF(HAS_FLAC)
436 IF(HAS_SNDFILE)
437     SET(ALURE_OBJS ${ALURE_OBJS} src/codec_sndfile.cpp)
438 ENDIF(HAS_SNDFILE)
439 IF(HAS_FLUIDSYNTH)
440     SET(ALURE_OBJS ${ALURE_OBJS} src/codec_fluidsynth.cpp)
441 ENDIF(HAS_FLUIDSYNTH)
442 IF(HAS_DUMB)
443     SET(ALURE_OBJS ${ALURE_OBJS} src/codec_dumb.cpp)
444 ENDIF(HAS_DUMB)
445 IF(HAS_MODPLUG)
446     SET(ALURE_OBJS ${ALURE_OBJS} src/codec_modplug.cpp)
447 ENDIF(HAS_MODPLUG)
448 IF(HAS_MPG123)
449     SET(ALURE_OBJS ${ALURE_OBJS} src/codec_mpg123.cpp)
450 ENDIF(HAS_MPG123)
452 IF(BUILD_SHARED)
453     #build a shared library
454     ADD_LIBRARY(${LIBNAME} SHARED ${ALURE_OBJS})
455     SET_TARGET_PROPERTIES(${LIBNAME} PROPERTIES DEFINE_SYMBOL ALURE_BUILD_LIBRARY
456                                                 VERSION ${LIB_VERSION}.0
457                                                 SOVERSION ${LIB_MAJOR_VERSION})
458     IF(WIN32)
459         SET_TARGET_PROPERTIES(${LIBNAME} PROPERTIES PREFIX "")
460     ENDIF(WIN32)
461     TARGET_LINK_LIBRARIES(${LIBNAME} ${OPENAL_LIBRARIES} ${EXTRA_LIBS})
463     INSTALL(TARGETS ${LIBNAME}
464             RUNTIME DESTINATION bin
465             LIBRARY DESTINATION lib${LIB_SUFFIX}
466             ARCHIVE DESTINATION lib${LIB_SUFFIX}
468 ENDIF(BUILD_SHARED)
469 IF(BUILD_STATIC)
470     #build a static library
471     ADD_LIBRARY(${LIBNAME}-static STATIC ${ALURE_OBJS})
472     SET_TARGET_PROPERTIES(${LIBNAME}-static PROPERTIES DEFINE_SYMBOL ALURE_BUILD_LIBRARY
473                                                        COMPILE_FLAGS -DALURE_STATIC_LIBRARY
474                                                        VERSION ${LIB_VERSION}.0)
475     INSTALL(TARGETS ${LIBNAME}-static
476             RUNTIME DESTINATION bin
477             LIBRARY DESTINATION lib${LIB_SUFFIX}
478             ARCHIVE DESTINATION lib${LIB_SUFFIX}
480 ENDIF(BUILD_STATIC)
483 ADD_EXECUTABLE(alureplay examples/alureplay.c)
484 ADD_EXECUTABLE(alurestream examples/alurestream.c)
485 IF(BUILD_SHARED)
486     TARGET_LINK_LIBRARIES(alureplay ${LIBNAME} ${OPENAL_LIBRARIES} ${EXTRA_LIBS})
487     TARGET_LINK_LIBRARIES(alurestream ${LIBNAME} ${OPENAL_LIBRARIES} ${EXTRA_LIBS})
488 ELSE(BUILD_SHARED)
489     SET_TARGET_PROPERTIES(alureplay PROPERTIES COMPILE_FLAGS -DALURE_STATIC_LIBRARY)
490     SET_TARGET_PROPERTIES(alurestream PROPERTIES COMPILE_FLAGS -DALURE_STATIC_LIBRARY)
491     TARGET_LINK_LIBRARIES(alureplay ${LIBNAME}-static ${OPENAL_LIBRARIES} ${EXTRA_LIBS})
492     TARGET_LINK_LIBRARIES(alurestream ${LIBNAME}-static ${OPENAL_LIBRARIES} ${EXTRA_LIBS})
493 ENDIF(BUILD_SHARED)
496 FIND_PROGRAM(NATDOCS_BIN NaturalDocs)
497 IF(NATDOCS_BIN)
498     ADD_CUSTOM_TARGET(docs
499                       "${NATDOCS_BIN}" -i "${ALURE_SOURCE_DIR}/src" -o HTML "${ALURE_SOURCE_DIR}/docs/html" -p "${ALURE_SOURCE_DIR}/docs/naturaldocs" -s Default CustomStyle
500                       COMMENT "Building NaturalDocs documentation..." VERBATIM)
501 ELSE(NATDOCS_BIN)
502     MESSAGE(STATUS "\nNaturalDocs not found; building documentation is disabled")
503 ENDIF(NATDOCS_BIN)
506 #add an install target here
507 IF(APPLE)
508     SET(INCPATH OpenAL)
509 ELSE(APPLE)
510     SET(INCPATH AL)
511 ENDIF(APPLE)
513 INSTALL(DIRECTORY "${ALURE_SOURCE_DIR}/docs/html"
514         DESTINATION share/doc/alure
516 INSTALL(FILES include/AL/alure.h
517         DESTINATION "include/${INCPATH}"
519 IF(BUILD_SHARED)
520     INSTALL(FILES "${ALURE_BINARY_DIR}/alure.pc"
521             DESTINATION "lib${LIB_SUFFIX}/pkgconfig"
522     )
523 ENDIF(BUILD_SHARED)
524 IF(BUILD_STATIC)
525     INSTALL(FILES "${ALURE_BINARY_DIR}/alure-static.pc"
526             DESTINATION "lib${LIB_SUFFIX}/pkgconfig"
527     )
528 ENDIF(BUILD_STATIC)
531 MESSAGE(STATUS "\n********************** Configured options **********************")
532 IF(BUILD_SHARED AND BUILD_STATIC)
533     MESSAGE(STATUS "Building shared, static library")
534 ELSEIF(BUILD_SHARED)
535     MESSAGE(STATUS "Building shared library")
536 ELSE(BUILD_SHARED AND BUILD_STATIC)
537     MESSAGE(STATUS "Building static library")
538 ENDIF(BUILD_SHARED AND BUILD_STATIC)
539 MESSAGE(STATUS "")
540 IF(HAS_SNDFILE)
541     MESSAGE(STATUS "SndFile support: enabled")
542 ELSE(HAS_SNDFILE)
543     MESSAGE(STATUS "SndFile support: disabled")
544 ENDIF(HAS_SNDFILE)
545 IF(HAS_VORBISFILE)
546     MESSAGE(STATUS "VorbisFile support: enabled")
547 ELSE(HAS_VORBISFILE)
548     MESSAGE(STATUS "VorbisFile support: disabled")
549 ENDIF(HAS_VORBISFILE)
550 IF(HAS_FLAC)
551     MESSAGE(STATUS "FLAC support: enabled")
552 ELSE(HAS_FLAC)
553     MESSAGE(STATUS "FLAC support: disabled")
554 ENDIF(HAS_FLAC)
555 IF(HAS_MPG123)
556     MESSAGE(STATUS "MPG123 support: enabled")
557 ELSE(HAS_MPG123)
558     MESSAGE(STATUS "MPG123 support: disabled")
559 ENDIF(HAS_MPG123)
560 IF(HAS_DUMB)
561     MESSAGE(STATUS "DUMB support: enabled")
562 ELSE(HAS_DUMB)
563     MESSAGE(STATUS "DUMB support: disabled")
564 ENDIF(HAS_DUMB)
565 IF(HAS_MODPLUG)
566     MESSAGE(STATUS "ModPlug support: enabled")
567 ELSE(HAS_MODPLUG)
568     MESSAGE(STATUS "ModPlug support: disabled")
569 ENDIF(HAS_MODPLUG)
570 IF(HAS_FLUIDSYNTH)
571     MESSAGE(STATUS "FluidSynth support: enabled")
572 ELSE(HAS_FLUIDSYNTH)
573     MESSAGE(STATUS "FluidSynth support: disabled")
574 ENDIF(HAS_FLUIDSYNTH)
575 MESSAGE(STATUS "")