Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Forgot to actually _add_ the CMakeLists.txt file. :/
- Loading branch information
Showing
1 changed file
with
240 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,240 @@ | ||
# SDL_sound; An abstract sound format decoding API. | ||
# | ||
# Please see the file LICENSE.txt in the source's root directory. | ||
|
||
cmake_minimum_required(VERSION 2.8.4) | ||
|
||
project(SDL_sound) | ||
set(SDLSOUND_VERSION 1.9.0) | ||
|
||
# Increment this if/when we break backwards compatibility. | ||
set(SDLSOUND_SOVERSION 1) | ||
|
||
# I hate that they define "WIN32" ... we're about to move to Win64...I hope! | ||
if(WIN32 AND NOT WINDOWS) | ||
set(WINDOWS TRUE) | ||
endif() | ||
|
||
include_directories(src) | ||
|
||
if(CMAKE_COMPILER_IS_GNUCC) | ||
# Don't use -rpath. | ||
set(CMAKE_SKIP_RPATH ON CACHE BOOL "Skip RPATH" FORCE) | ||
endif() | ||
|
||
if(CMAKE_C_COMPILER_ID STREQUAL "SunPro") | ||
add_definitions(-erroff=E_EMPTY_TRANSLATION_UNIT) | ||
add_definitions(-xldscope=hidden) | ||
endif() | ||
|
||
find_package(SDL2 REQUIRED) | ||
include_directories(${SDL2_INCLUDE_DIRS}) | ||
|
||
|
||
# Decoders ... | ||
# These are (mostly) on by default now, so these options are only useful for | ||
# disabling them. | ||
|
||
macro(sdlsound_decoder_option _VAR _NAME _EXTS) | ||
option(SDLSOUND_DECODER_${_VAR} "Enable ${_NAME} support (${_EXTS})" TRUE) | ||
if(NOT SDLSOUND_DECODER_${_VAR}) | ||
add_definitions("-DSOUND_SUPPORTS_${_VAR}=0") | ||
endif() | ||
endmacro() | ||
|
||
sdlsound_decoder_option(WAV "Wave" ".WAV") | ||
sdlsound_decoder_option(AIFF "Audio Interchange" ".AIFF") | ||
sdlsound_decoder_option(AU "Sun/NeXT audio" ".AU") | ||
sdlsound_decoder_option(VOC "Creative Labs voice" ".VOC") | ||
sdlsound_decoder_option(FLAC "Free Lossless Audio Codec" ".FLAC") | ||
sdlsound_decoder_option(OGG "Ogg Vorbis" ".OGG") | ||
sdlsound_decoder_option(RAW "raw PCM audio" ".RAW") | ||
sdlsound_decoder_option(SHN "Shorten" ".SHN") | ||
sdlsound_decoder_option(SPEEX "Speex" ".SPEEX") | ||
sdlsound_decoder_option(MODPLUG "ModPlug" "various tracker formats") | ||
sdlsound_decoder_option(MIKMOD "MikMod" "various tracker formats") | ||
|
||
if(APPLE) | ||
sdlsound_decoder_option(COREAUDIO "CoreAudio" "various audio formats") | ||
if(SDLSOUND_DECODER_COREAUDIO) | ||
set(OPTIONAL_LIBRARY_LIBS ${OPTIONAL_LIBRARY_LIBS} "-framework AudioToolbox") | ||
endif() | ||
endif() | ||
|
||
if(SDLSOUND_DECODER_MODPLUG) | ||
set(LIBMODPLUG_SRCS | ||
src/libmodplug/fastmix.cpp | ||
src/libmodplug/load_669.cpp | ||
src/libmodplug/load_abc.cpp | ||
src/libmodplug/load_amf.cpp | ||
src/libmodplug/load_ams.cpp | ||
src/libmodplug/load_dbm.cpp | ||
src/libmodplug/load_dmf.cpp | ||
src/libmodplug/load_dsm.cpp | ||
src/libmodplug/load_far.cpp | ||
src/libmodplug/load_it.cpp | ||
src/libmodplug/load_mdl.cpp | ||
src/libmodplug/load_med.cpp | ||
src/libmodplug/load_mid.cpp | ||
src/libmodplug/load_mod.cpp | ||
src/libmodplug/load_mt2.cpp | ||
src/libmodplug/load_mtm.cpp | ||
src/libmodplug/load_okt.cpp | ||
src/libmodplug/load_pat.cpp | ||
src/libmodplug/load_psm.cpp | ||
src/libmodplug/load_ptm.cpp | ||
src/libmodplug/load_s3m.cpp | ||
src/libmodplug/load_stm.cpp | ||
src/libmodplug/load_ult.cpp | ||
src/libmodplug/load_umx.cpp | ||
src/libmodplug/load_wav.cpp | ||
src/libmodplug/load_xm.cpp | ||
src/libmodplug/mmcmp.cpp | ||
src/libmodplug/modplug.cpp | ||
src/libmodplug/snd_dsp.cpp | ||
src/libmodplug/snd_flt.cpp | ||
src/libmodplug/snd_fx.cpp | ||
src/libmodplug/sndfile.cpp | ||
src/libmodplug/sndmix.cpp | ||
) | ||
endif() | ||
|
||
# Almost everything is "compiled" here, but things that don't apply to the | ||
# build are #ifdef'd out. This is to make it easy to embed SDL_sound into | ||
# another project or bring up a new build system: just compile all the source | ||
# code and #define the things you want. | ||
set(SDLSOUND_SRCS | ||
src/SDL_sound.c | ||
src/SDL_sound_aiff.c | ||
src/SDL_sound_au.c | ||
src/SDL_sound_coreaudio.c | ||
src/SDL_sound_flac.c | ||
src/SDL_sound_mikmod.c | ||
src/SDL_sound_modplug.c | ||
src/SDL_sound_ogg.c | ||
src/SDL_sound_raw.c | ||
src/SDL_sound_shn.c | ||
src/SDL_sound_speex.c | ||
src/SDL_sound_voc.c | ||
src/SDL_sound_wav.c | ||
${LIBMODPLUG_SRCS} | ||
) | ||
|
||
option(SDLSOUND_BUILD_STATIC "Build static library" TRUE) | ||
if(SDLSOUND_BUILD_STATIC) | ||
add_library(SDL2_sound-static STATIC ${SDLSOUND_SRCS}) | ||
# Don't rename this on Windows, since DLLs will also produce an import | ||
# library named "SDL2_sound.lib" which would conflict; Unix tend to like | ||
# the same library name with a different extension for static libs, but | ||
# Windows can just have a separate name. | ||
if(NOT MSVC) | ||
set_target_properties(SDL2_sound-static PROPERTIES OUTPUT_NAME "SDL2_sound") | ||
endif() | ||
set(SDLSOUND_LIB_TARGET SDL2_sound-static) | ||
set(SDLSOUND_INSTALL_TARGETS ${SDLSOUND_INSTALL_TARGETS} ";SDL2_sound-static") | ||
endif() | ||
|
||
option(SDLSOUND_BUILD_SHARED "Build shared library" TRUE) | ||
if(SDLSOUND_BUILD_SHARED) | ||
add_library(SDL2_sound SHARED ${SDLSOUND_SRCS}) | ||
set_target_properties(SDL2_sound PROPERTIES MACOSX_RPATH 1) | ||
set_target_properties(SDL2_sound PROPERTIES VERSION ${SDLSOUND_VERSION}) | ||
set_target_properties(SDL2_sound PROPERTIES SOVERSION ${SDLSOUND_SOVERSION}) | ||
target_link_libraries(SDL2_sound ${SDL2_LIBRARIES} ${OPTIONAL_LIBRARY_LIBS} ${OTHER_LDFLAGS}) | ||
set(SDLSOUND_LIB_TARGET SDL2_sound) | ||
set(SDLSOUND_INSTALL_TARGETS ${SDLSOUND_INSTALL_TARGETS} ";SDL2_sound") | ||
endif() | ||
|
||
if(NOT SDLSOUND_BUILD_SHARED AND NOT SDLSOUND_BUILD_STATIC) | ||
message(FATAL "Both shared and static libraries are disabled!") | ||
endif() | ||
|
||
# CMake FAQ says I need this... | ||
if(SDLSOUND_BUILD_SHARED AND SDLSOUND_BUILD_STATIC AND NOT WINDOWS) | ||
set_target_properties(SDL2_sound PROPERTIES CLEAN_DIRECT_OUTPUT 1) | ||
set_target_properties(SDL2_sound-static PROPERTIES CLEAN_DIRECT_OUTPUT 1) | ||
endif() | ||
|
||
option(SDLSOUND_BUILD_TEST "Build stdio test program." TRUE) | ||
mark_as_advanced(SDLSOUND_BUILD_TEST) | ||
if(SDLSOUND_BUILD_TEST) | ||
# !!! FIXME define SUPPORT_PHYSFS=1 for physfsrwops support... | ||
add_executable(playsound playsound/playsound.c playsound/physfsrwops.c) | ||
target_link_libraries(playsound ${SDLSOUND_LIB_TARGET} ${OTHER_LDFLAGS}) | ||
set(SDLSOUND_INSTALL_TARGETS ${SDLSOUND_INSTALL_TARGETS} ";playsound") | ||
add_executable(playsound_simple playsound/playsound_simple.c) | ||
target_link_libraries(playsound_simple ${SDLSOUND_LIB_TARGET} ${OTHER_LDFLAGS}) | ||
#set(SDLSOUND_INSTALL_TARGETS ${SDLSOUND_INSTALL_TARGETS} ";playsound_simple") | ||
endif() | ||
|
||
install(TARGETS ${SDLSOUND_INSTALL_TARGETS} | ||
RUNTIME DESTINATION bin | ||
LIBRARY DESTINATION lib${LIB_SUFFIX} | ||
ARCHIVE DESTINATION lib${LIB_SUFFIX}) | ||
install(FILES SDL_sound.h DESTINATION include) | ||
|
||
find_package(Doxygen) | ||
if(DOXYGEN_FOUND) | ||
set(SDLSOUND_OUTPUT_DOXYFILE "${CMAKE_CURRENT_BINARY_DIR}/Doxyfile") | ||
configure_file( | ||
"${CMAKE_CURRENT_SOURCE_DIR}/docs/Doxyfile" | ||
"${SDLSOUND_OUTPUT_DOXYFILE}" | ||
COPYONLY | ||
) | ||
file(APPEND "${SDLSOUND_OUTPUT_DOXYFILE}" "\n\n# Below auto-generated by cmake...\n\n") | ||
file(APPEND "${SDLSOUND_OUTPUT_DOXYFILE}" "PROJECT_NUMBER = \"${SDLSOUND_VERSION}\"\n") | ||
file(APPEND "${SDLSOUND_OUTPUT_DOXYFILE}" "OUTPUT_DIRECTORY = \"${CMAKE_CURRENT_BINARY_DIR}/docs\"\n") | ||
file(APPEND "${SDLSOUND_OUTPUT_DOXYFILE}" "\n# End auto-generated section.\n\n") | ||
|
||
add_custom_target( | ||
docs | ||
${DOXYGEN_EXECUTABLE} "${SDLSOUND_OUTPUT_DOXYFILE}" | ||
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" | ||
COMMENT "Building documentation..." | ||
) | ||
else() | ||
message(STATUS "Doxygen not found. You won't be able to build documentation.") | ||
endif() | ||
|
||
if(UNIX) | ||
set(SDLSOUND_TARBALL "${CMAKE_CURRENT_SOURCE_DIR}/../SDL_sound-${SDLSOUND_VERSION}.tar.bz2") | ||
add_custom_target( | ||
dist | ||
hg archive -t tbz2 "${SDLSOUND_TARBALL}" | ||
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" | ||
COMMENT "Building source tarball '${SDLSOUND_TARBALL}'..." | ||
) | ||
add_custom_target( | ||
uninstall | ||
"${CMAKE_CURRENT_SOURCE_DIR}/docs/uninstall.sh" | ||
WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}" | ||
COMMENT "Uninstall the project..." | ||
) | ||
endif() | ||
|
||
macro(message_bool_option _NAME _VALUE) | ||
if(${_VALUE}) | ||
message(STATUS " ${_NAME}: enabled") | ||
else() | ||
message(STATUS " ${_NAME}: disabled") | ||
endif() | ||
endmacro() | ||
|
||
message(STATUS "SDL_sound will build with the following options:") | ||
message_bool_option("WAV support" SDLSOUND_DECODER_WAV) | ||
message_bool_option("AIFF support" SDLSOUND_DECODER_AIFF) | ||
message_bool_option("AU support" SDLSOUND_DECODER_AU) | ||
message_bool_option("VOC support" SDLSOUND_DECODER_VOC) | ||
message_bool_option("FLAC support" SDLSOUND_DECODER_FLAC) | ||
message_bool_option("OGG support" SDLSOUND_DECODER_OGG) | ||
message_bool_option("RAW support" SDLSOUND_DECODER_RAW) | ||
message_bool_option("SHN support" SDLSOUND_DECODER_SHN) | ||
message_bool_option("SPEEX support" SDLSOUND_DECODER_SPEEX) | ||
message_bool_option("MODPLUG support" SDLSOUND_DECODER_MODPLUG) | ||
message_bool_option("MIKMOD support" SDLSOUND_DECODER_MIKMOD) | ||
message_bool_option("COREAUDIO support" SDLSOUND_DECODER_COREAUDIO) | ||
message_bool_option("Build static library" SDLSOUND_BUILD_STATIC) | ||
message_bool_option("Build shared library" SDLSOUND_BUILD_SHARED) | ||
message_bool_option("Build stdio test program" SDLSOUND_BUILD_TEST) | ||
|
||
# end of CMakeLists.txt ... |