Implement OpenAL as an audio backend
This commit is contained in:
parent
09d00bdd5f
commit
aaa5d22ec8
2 changed files with 1125 additions and 2 deletions
|
|
@ -70,8 +70,94 @@ if("${CMAKE_SYSTEM_NAME}" MATCHES Windows)
|
|||
)
|
||||
endif()
|
||||
|
||||
target_compile_definitions(SRB2SDL2 PRIVATE -DHAVE_MIXER -DSOUND=SOUND_MIXER)
|
||||
target_compile_definitions(SRB2SDL2 PRIVATE -DHAVE_SDL)
|
||||
find_package(SDL2 CONFIG REQUIRED)
|
||||
find_package(SDL2 REQUIRED)
|
||||
target_link_libraries(SRB2SDL2 PRIVATE SDL2::SDL2)
|
||||
if(TARGET SDL2main)
|
||||
target_link_libraries(SRB2SDL2 PRIVATE SDL2main)
|
||||
endif()
|
||||
target_compile_definitions(SRB2SDL2 PRIVATE -DDIRECTFULLSCREEN -DHAVE_SDL)
|
||||
target_include_directories(SRB2SDL2 PRIVATE ${SDL2_INCLUDE_DIR})
|
||||
|
||||
find_package(OpenAL CONFIG QUIET)
|
||||
find_package(OpenAL QUIET)
|
||||
if(TARGET OpenAL::OpenAL)
|
||||
target_link_libraries(SRB2SDL2 PRIVATE sndfile)
|
||||
target_compile_definitions(SRB2SDL2 PRIVATE -DHAVE_OPENAL)
|
||||
target_link_libraries(SRB2SDL2 PRIVATE OpenAL::OpenAL)
|
||||
target_sources(SRB2SDL2 PRIVATE al_sound.c)
|
||||
else()
|
||||
find_package(SDL2_mixer_ext CONFIG QUIET)
|
||||
find_package(SDL2_mixer_ext QUIET)
|
||||
if(TARGET SDL2_mixer_ext::SDL2_mixer_ext OR TARGET SDL2_mixer_ext::SDL2_mixer_ext_Static OR TARGET SDL2_mixer_ext OR TARGET SDL2_mixer_ext_Static)
|
||||
if(NOT TARGET SDL2_mixer_ext::SDL2_mixer_ext_Static AND TARGET SDL2_mixer_ext_Static)
|
||||
add_library(SDL2_mixer_ext::SDL2_mixer_ext_Static ALIAS SDL2_mixer_ext_Static)
|
||||
endif()
|
||||
if(NOT TARGET SDL2_mixer_ext::SDL2_mixer_ext AND TARGET SDL2_mixer_ext)
|
||||
add_library(SDL2_mixer_ext::SDL2_mixer_ext ALIAS SDL2_mixer_ext)
|
||||
endif()
|
||||
if(TARGET SDL2_mixer_ext::SDL2_mixer_ext OR TARGET SDL2_mixer_ext::SDL2_mixer_ext_Static)
|
||||
if(TARGET SDL2_mixer_ext::SDL2_mixer_ext_Static)
|
||||
target_link_libraries(SRB2SDL2 PRIVATE SDL2_mixer_ext::SDL2_mixer_ext_Static)
|
||||
else()
|
||||
target_link_libraries(SRB2SDL2 PRIVATE SDL2_mixer_ext::SDL2_mixer_ext)
|
||||
endif()
|
||||
target_compile_definitions(SRB2SDL2 PRIVATE -DHAVE_MIXER -DHAVE_MIXERX -DSOUND=SOUND_MIXER)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(TARGET SDL2_mixer_ext::SDL2_mixer_ext OR TARGET SDL2_mixer_ext::SDL2_mixer_ext_Static)
|
||||
message(STATUS "SDL2_mixer_ext found, skipping SDL2_mixer")
|
||||
else()
|
||||
message(STATUS "SDL2_mixer_ext not found, going to try SDL2_mixer")
|
||||
find_package(SDL2_mixer CONFIG QUIET)
|
||||
find_package(SDL2_mixer QUIET)
|
||||
if(TARGET SDL2_mixer::SDL2_mixer OR TARGET SDL2_mixer::SDL2_mixer-static OR TARGET SDL2_mixer OR TARGET SDL2_mixer_Static)
|
||||
if(NOT TARGET SDL2_mixer::SDL2_mixer-static AND TARGET SDL2_mixer_Static)
|
||||
add_library(SDL2_mixer::SDL2_mixer-static ALIAS SDL2_mixer_Static)
|
||||
endif()
|
||||
if(NOT TARGET SDL2_mixer::SDL2_mixer AND TARGET SDL2_mixer)
|
||||
add_library(SDL2_mixer::SDL2_mixer ALIAS SDL2_mixer)
|
||||
endif()
|
||||
if(TARGET SDL2_mixer::SDL2_mixer OR TARGET SDL2_mixer::SDL2_mixer-static)
|
||||
if(TARGET SDL2_mixer::SDL2_mixer-static)
|
||||
target_link_libraries(SRB2SDL2 PRIVATE SDL2_mixer::SDL2_mixer-static)
|
||||
else()
|
||||
target_link_libraries(SRB2SDL2 PRIVATE SDL2_mixer::SDL2_mixer)
|
||||
endif()
|
||||
target_compile_definitions(SRB2SDL2 PRIVATE -DHAVE_MIXER -DSOUND=SOUND_MIXER)
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(TARGET SDL2_mixer_ext::SDL2_mixer_ext OR TARGET SDL2_mixer_ext::SDL2_mixer_ext_Static OR TARGET SDL2_mixer::SDL2_mixer OR TARGET SDL2_mixer::SDL2_mixer-static)
|
||||
target_sources(SRB2SDL2 PRIVATE mixer_sound.c)
|
||||
else()
|
||||
target_sources(SRB2SDL2 PRIVATE sdl_sound.c)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(TARGET SDL2::SDL2)
|
||||
message(STATUS "SDL2 Found")
|
||||
else()
|
||||
message(STATUS "no SDL2 Found")
|
||||
endif()
|
||||
|
||||
if(TARGET SDL2::SDL2main)
|
||||
message(STATUS "SDL2main Found")
|
||||
else()
|
||||
message(STATUS "No SDL2main Found")
|
||||
endif()
|
||||
|
||||
if(TARGET OpenAL::OpenAL)
|
||||
message(STATUS "OpenAL Found")
|
||||
elseif(TARGET SDL2_mixer_ext::SDL2_mixer_ext OR TARGET SDL2_mixer_ext::SDL2_mixer_ext_Static)
|
||||
message(STATUS "SDL2_mixer_ext Found")
|
||||
elseif(TARGET SDL2_mixer::SDL2_mixer OR TARGET SDL2_mixer::SDL2_mixer-static)
|
||||
message(STATUS "SDL2_mixer found")
|
||||
else()
|
||||
message(STATUS "no SDL2_mixer_ext or SDL2_mixer Found")
|
||||
endif()
|
||||
|
||||
#### Installation ####
|
||||
if("${CMAKE_SYSTEM_NAME}" MATCHES Darwin)
|
||||
|
|
|
|||
1037
src/sdl/al_sound.c
Normal file
1037
src/sdl/al_sound.c
Normal file
File diff suppressed because it is too large
Load diff
Loading…
Reference in a new issue