Skip to content

Commit

Permalink
External: Use openal-soft as the OpenAL implementation (Github #180)
Browse files Browse the repository at this point in the history
1. Add openal-soft
2. Enable OpenAL on Android
  • Loading branch information
gongminmin committed Jan 17, 2019
1 parent 2c9914f commit b1fe6eb
Show file tree
Hide file tree
Showing 12 changed files with 91 additions and 57 deletions.
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ External/googletest
External/libogg
External/libvorbis
External/nanosvg
External/OpenALSDK
External/openal-soft
External/Python
External/python-cmake-buildsystem
External/rapidjson
Expand Down
2 changes: 1 addition & 1 deletion Build/CMake/Modules/Compiler.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ IF(CMAKE_C_COMPILER_ID MATCHES MSVC)
IF(KLAYGE_PLATFORM_WINDOWS_DESKTOP)
FOREACH(flag_var
CMAKE_C_STANDARD_LIBRARIES CMAKE_CXX_STANDARD_LIBRARIES)
SET(${flag_var} "${${flag_var}} gdi32.lib ole32.lib oleaut32.lib comdlg32.lib advapi32.lib")
SET(${flag_var} "${${flag_var}} gdi32.lib ole32.lib oleaut32.lib comdlg32.lib advapi32.lib shell32.lib")
ENDFOREACH()
ENDIF()
ENDIF()
Expand Down
8 changes: 3 additions & 5 deletions External/Build/CMake/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -141,12 +141,10 @@ if(KLAYGE_IS_DEV_PLATFORM)
if((NOT (KLAYGE_ARCH_NAME STREQUAL "arm")) AND (NOT (KLAYGE_ARCH_NAME STREQUAL "arm64")))
add_subdirectory(UniversalDXSDK)
endif()

if(KLAYGE_PLATFORM_WINDOWS AND (NOT (KLAYGE_ARCH_NAME STREQUAL "arm")) AND (NOT (KLAYGE_ARCH_NAME STREQUAL "arm64")))
add_subdirectory(OpenALSDK)
endif()
endif()

if(KLAYGE_PLATFORM_WINDOWS_DESKTOP OR KLAYGE_PLATFORM_ANDROID)
add_subdirectory(openal-soft)
endif()
if(KLAYGE_COMPILER_MSVC AND (CMAKE_GENERATOR MATCHES "^Visual Studio") AND KLAYGE_PLATFORM_WINDOWS_DESKTOP AND (KLAYGE_ARCH_NAME STREQUAL "x64"))
add_subdirectory(wpftoolkit)
endif()
19 changes: 0 additions & 19 deletions External/Build/CMake/OpenALSDK/CMakeLists.txt

This file was deleted.

62 changes: 62 additions & 0 deletions External/Build/CMake/openal-soft/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
set(OPENALSOFT_PROJECT_DIR "${EXTERNAL_PROJECT_DIR}/openal-soft")
set(OPENALSOFT_OUTPUT_DIR "${EXTERNAL_PROJECT_DIR}/lib/openal-soft/${KLAYGE_PLATFORM_NAME}")

UpdateExternalLib("openal-soft" "https://github.com/kcat/openal-soft.git" "5b382a69b6da10717daa8de388246053df0d27a4")

if(KLAYGE_PLATFORM_WINDOWS_DESKTOP)
set(ALSOFT_BACKEND_DSOUND ON CACHE BOOL "" FORCE)
else()
set(ALSOFT_BACKEND_DSOUND OFF CACHE BOOL "" FORCE)
endif()
if(KLAYGE_PLATFORM_WINDOWS AND KLAYGE_COMPILER_GCC)
set(ALSOFT_BUILD_IMPORT_LIB OFF CACHE BOOL "" FORCE)
endif()
set(ALSOFT_BACKEND_WAVE OFF CACHE BOOL "" FORCE)
set(ALSOFT_BACKEND_WINMM OFF CACHE BOOL "" FORCE)
set(ALSOFT_EXAMPLES OFF CACHE BOOL "" FORCE)
set(ALSOFT_INSTALL OFF CACHE BOOL "" FORCE)
set(ALSOFT_NO_CONFIG_UTIL ON CACHE BOOL "" FORCE)
set(ALSOFT_TESTS OFF CACHE BOOL "" FORCE)
set(ALSOFT_UTILS OFF CACHE BOOL "" FORCE)

if(KLAYGE_COMPILER_MSVC)
set(HAVE___RESTRICT FALSE)
if((KLAYGE_ARCH_NAME STREQUAL "arm") OR (KLAYGE_ARCH_NAME STREQUAL "arm64"))
set(HAVE_BITSCANFORWARD_INTRINSIC FALSE)
set(HAVE_BITSCANFORWARD64_INTRINSIC FALSE)
endif()
endif()

if(NOT (MSVC_VERSION GREATER 1900))
add_definitions(-D_WIN32_IE_WIN10=0x0A00)
endif()
if(KLAYGE_PLATFORM_ANDROID)
set(LIBTYPE STATIC)
endif()
add_subdirectory(${OPENALSOFT_PROJECT_DIR} "${CMAKE_CURRENT_BINARY_DIR}/openal-soft")

set_target_properties(OpenAL PROPERTIES
ARCHIVE_OUTPUT_DIRECTORY ${OPENALSOFT_OUTPUT_DIR}
ARCHIVE_OUTPUT_DIRECTORY_DEBUG ${OPENALSOFT_OUTPUT_DIR}
ARCHIVE_OUTPUT_DIRECTORY_RELEASE ${OPENALSOFT_OUTPUT_DIR}
ARCHIVE_OUTPUT_DIRECTORY_RELWITHDEBINFO ${OPENALSOFT_OUTPUT_DIR}
ARCHIVE_OUTPUT_DIRECTORY_MINSIZEREL ${OPENALSOFT_OUTPUT_DIR}
RUNTIME_OUTPUT_DIRECTORY ${KLAYGE_BIN_DIR}
RUNTIME_OUTPUT_DIRECTORY_DEBUG ${KLAYGE_BIN_DIR}
RUNTIME_OUTPUT_DIRECTORY_RELEASE ${KLAYGE_BIN_DIR}
RUNTIME_OUTPUT_DIRECTORY_RELWITHDEBINFO ${KLAYGE_BIN_DIR}
RUNTIME_OUTPUT_DIRECTORY_MINSIZEREL ${KLAYGE_BIN_DIR}
LIBRARY_OUTPUT_DIRECTORY ${KLAYGE_BIN_DIR}
LIBRARY_OUTPUT_DIRECTORY_DEBUG ${KLAYGE_BIN_DIR}
LIBRARY_OUTPUT_DIRECTORY_RELEASE ${KLAYGE_BIN_DIR}
LIBRARY_OUTPUT_DIRECTORY_RELWITHDEBINFO ${KLAYGE_BIN_DIR}
LIBRARY_OUTPUT_DIRECTORY_MINSIZEREL ${KLAYGE_BIN_DIR}
PROJECT_LABEL OpenAL
DEBUG_POSTFIX ${CMAKE_DEBUG_POSTFIX}
OUTPUT_NAME OpenAL${KLAYGE_OUTPUT_SUFFIX}
)

foreach(target
"build_version" "common" "native-tools" "OpenAL")
set_target_properties(${target} PROPERTIES FOLDER "${EXTERNAL_VS_FOLDER_PREFIX}/openal-soft")
endforeach()
Empty file removed External/OpenALSDK/.hidden
Empty file.
8 changes: 3 additions & 5 deletions KlayGE/Build/CMake/Engine/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,10 @@ IF(NOT KLAYGE_PLATFORM_WINDOWS_STORE)
ADD_SUBDIRECTORY(Plugins/Render/OpenGL)
ENDIF()
ADD_SUBDIRECTORY(Plugins/Render/OpenGLES)

IF((NOT KLAYGE_PLATFORM_ANDROID) AND (NOT KLAYGE_PLATFORM_IOS) AND (NOT KLAYGE_PLATFORM_NAME STREQUAL "win_arm") AND (NOT KLAYGE_PLATFORM_NAME STREQUAL "win_arm64"))
ADD_SUBDIRECTORY(Plugins/Audio/OpenAL)
ENDIF()
ENDIF()

IF(KLAYGE_PLATFORM_WINDOWS_DESKTOP OR KLAYGE_PLATFORM_LINUX OR KLAYGE_PLATFORM_DARWIN OR KLAYGE_PLATFORM_ANDROID)
ADD_SUBDIRECTORY(Plugins/Audio/OpenAL)
ENDIF()
IF(KLAYGE_IS_DEV_PLATFORM)
ADD_SUBDIRECTORY(Plugins/DevHelper)
ENDIF()
Expand Down
24 changes: 7 additions & 17 deletions KlayGE/Build/CMake/Engine/Plugins/Audio/OpenAL/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,11 +1,3 @@
IF(WIN32)
SET(OAL_PLATFORM_NAME "Win64")
ENDIF()
IF(UNIX)
SET(OAL_PLATFORM_NAME "linux_x64")
ENDIF()


SET(LIB_NAME KlayGE_AudioEngine_OpenAL)

SET(OPENAL_AE_SOURCE_FILES
Expand All @@ -23,12 +15,12 @@ SOURCE_GROUP("Source Files" FILES ${OPENAL_AE_SOURCE_FILES})
SOURCE_GROUP("Header Files" FILES ${OPENAL_AE_HEADER_FILES})

INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIR})
INCLUDE_DIRECTORIES(${KLAYGE_PROJECT_DIR}/../External/OpenALSDK/include)
INCLUDE_DIRECTORIES(${KLAYGE_PROJECT_DIR}/../External/openal-soft/include)
INCLUDE_DIRECTORIES(${KLAYGE_PROJECT_DIR}/../KFL/include)
INCLUDE_DIRECTORIES(${KLAYGE_PROJECT_DIR}/Core/Include)
INCLUDE_DIRECTORIES(${KLAYGE_PROJECT_DIR}/Plugins/Include)
if(KLAYGE_PLATFORM_WINDOWS)
LINK_DIRECTORIES(${KLAYGE_PROJECT_DIR}/../External/OpenALSDK/libs/${OAL_PLATFORM_NAME})
if(KLAYGE_PLATFORM_WINDOWS OR KLAYGE_PLATFORM_ANDROID)
LINK_DIRECTORIES(${KLAYGE_PROJECT_DIR}/../External/lib/openal-soft/${KLAYGE_PLATFORM_NAME})
endif()
LINK_DIRECTORIES(${KLAYGE_PROJECT_DIR}/../KFL/lib/${KLAYGE_PLATFORM_NAME})
IF(KLAYGE_PLATFORM_DARWIN OR KLAYGE_PLATFORM_LINUX)
Expand All @@ -37,17 +29,15 @@ ELSE()
LINK_DIRECTORIES(${KLAYGE_OUTPUT_DIR})
ENDIF()

ADD_LIBRARY(${LIB_NAME} SHARED
ADD_LIBRARY(${LIB_NAME} ${KLAYGE_PREFERRED_LIB_TYPE}
${OPENAL_AE_SOURCE_FILES} ${OPENAL_AE_HEADER_FILES}
)
ADD_DEPENDENCIES(${LIB_NAME} ${KLAYGE_CORELIB_NAME})
if(KLAYGE_PLATFORM_WINDOWS AND (NOT (KLAYGE_ARCH_NAME STREQUAL "arm")) AND (NOT (KLAYGE_ARCH_NAME STREQUAL "arm64")))
add_dependencies(${LIB_NAME} OpenALRedist)
endif()

IF(KLAYGE_PLATFORM_WINDOWS_DESKTOP)
IF(KLAYGE_PLATFORM_WINDOWS OR KLAYGE_PLATFORM_ANDROID)
add_dependencies(${LIB_NAME} OpenAL)
SET(EXTRA_LINKED_LIBRARIES ${EXTRA_LINKED_LIBRARIES}
OpenAL32)
debug OpenAL${KLAYGE_OUTPUT_SUFFIX}_d optimized OpenAL${KLAYGE_OUTPUT_SUFFIX})
ELSEIF(KLAYGE_PLATFORM_DARWIN OR KLAYGE_PLATFORM_IOS)
FIND_LIBRARY(OPENAL OpenAL "/")
SET(EXTRA_LINKED_LIBRARIES ${EXTRA_LINKED_LIBRARIES}
Expand Down
8 changes: 6 additions & 2 deletions KlayGE/Build/CMake/Samples/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -189,7 +189,10 @@ MACRO(SETUP_SAMPLE EXE_NAME)
LINK_DIRECTORIES(${KLAYGE_PROJECT_DIR}/../glloader/lib/${KLAYGE_PLATFORM_NAME})
LINK_DIRECTORIES(${KLAYGE_PROJECT_DIR}/../kfont/lib/${KLAYGE_PLATFORM_NAME})
LINK_DIRECTORIES(${KLAYGE_PROJECT_DIR}/../External/lib/7z/${KLAYGE_PLATFORM_NAME})
LINK_DIRECTORIES(${KLAYGE_PROJECT_DIR}/../External/lib/android_native_app_glue/${KLAYGE_PLATFORM_NAME})
if(KLAYGE_PLATFORM_ANDROID)
LINK_DIRECTORIES(${KLAYGE_PROJECT_DIR}/../External/lib/android_native_app_glue/${KLAYGE_PLATFORM_NAME})
LINK_DIRECTORIES(${KLAYGE_PROJECT_DIR}/../External/lib/openal-soft/${KLAYGE_PLATFORM_NAME})
endif()
ENDIF()
LINK_DIRECTORIES(${EXTRA_LINKED_DIRS})

Expand Down Expand Up @@ -256,7 +259,7 @@ MACRO(SETUP_SAMPLE EXE_NAME)
debug KlayGE_RenderEngine_OpenGLES${KLAYGE_OUTPUT_SUFFIX}_d optimized KlayGE_RenderEngine_OpenGLES${KLAYGE_OUTPUT_SUFFIX}
debug KlayGE_Scene_OCTree${KLAYGE_OUTPUT_SUFFIX}_d optimized KlayGE_Scene_OCTree${KLAYGE_OUTPUT_SUFFIX}
debug KlayGE_InputEngine_MsgInput${KLAYGE_OUTPUT_SUFFIX}_d optimized KlayGE_InputEngine_MsgInput${KLAYGE_OUTPUT_SUFFIX}
debug KlayGE_AudioEngine_NullAudio${KLAYGE_OUTPUT_SUFFIX}_d optimized KlayGE_AudioEngine_NullAudio${KLAYGE_OUTPUT_SUFFIX}
debug KlayGE_AudioEngine_OpenAL${KLAYGE_OUTPUT_SUFFIX}_d optimized KlayGE_AudioEngine_OpenAL${KLAYGE_OUTPUT_SUFFIX}
debug KlayGE_ShowEngine_NullShow${KLAYGE_OUTPUT_SUFFIX}_d optimized KlayGE_ShowEngine_NullShow${KLAYGE_OUTPUT_SUFFIX}
debug KlayGE_ScriptEngine_NullScript${KLAYGE_OUTPUT_SUFFIX}_d optimized KlayGE_ScriptEngine_NullScript${KLAYGE_OUTPUT_SUFFIX}
debug KlayGE_AudioDataSource_NullAudioDataSource${KLAYGE_OUTPUT_SUFFIX}_d optimized KlayGE_AudioDataSource_NullAudioDataSource${KLAYGE_OUTPUT_SUFFIX}
Expand All @@ -269,6 +272,7 @@ MACRO(SETUP_SAMPLE EXE_NAME)
debug kfont${KLAYGE_OUTPUT_SUFFIX}_d optimized kfont${KLAYGE_OUTPUT_SUFFIX}
${KLAYGE_FILESYSTEM_LIBRARY}
debug LZMA${KLAYGE_OUTPUT_SUFFIX}_d optimized LZMA${KLAYGE_OUTPUT_SUFFIX}
debug OpenAL${KLAYGE_OUTPUT_SUFFIX}_d optimized OpenAL${KLAYGE_OUTPUT_SUFFIX}
log android atomic)
ELSEIF(KLAYGE_PLATFORM_IOS)
SET(EXTRA_LINKED_LIBRARIES ${EXTRA_LINKED_LIBRARIES}
Expand Down
8 changes: 6 additions & 2 deletions KlayGE/Build/CMake/Tutorials/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -183,7 +183,10 @@ MACRO(SETUP_TUTORIAL EXE_NAME)
LINK_DIRECTORIES(${KLAYGE_PROJECT_DIR}/../glloader/lib/${KLAYGE_PLATFORM_NAME})
LINK_DIRECTORIES(${KLAYGE_PROJECT_DIR}/../kfont/lib/${KLAYGE_PLATFORM_NAME})
LINK_DIRECTORIES(${KLAYGE_PROJECT_DIR}/../External/lib/7z/${KLAYGE_PLATFORM_NAME})
LINK_DIRECTORIES(${KLAYGE_PROJECT_DIR}/../External/lib/android_native_app_glue/${KLAYGE_PLATFORM_NAME})
if(KLAYGE_PLATFORM_ANDROID)
LINK_DIRECTORIES(${KLAYGE_PROJECT_DIR}/../External/lib/android_native_app_glue/${KLAYGE_PLATFORM_NAME})
LINK_DIRECTORIES(${KLAYGE_PROJECT_DIR}/../External/lib/openal-soft/${KLAYGE_PLATFORM_NAME})
endif()
ENDIF()
LINK_DIRECTORIES(${EXTRA_LINKED_DIRS})

Expand Down Expand Up @@ -250,7 +253,7 @@ MACRO(SETUP_TUTORIAL EXE_NAME)
debug KlayGE_RenderEngine_OpenGLES${KLAYGE_OUTPUT_SUFFIX}_d optimized KlayGE_RenderEngine_OpenGLES${KLAYGE_OUTPUT_SUFFIX}
debug KlayGE_Scene_OCTree${KLAYGE_OUTPUT_SUFFIX}_d optimized KlayGE_Scene_OCTree${KLAYGE_OUTPUT_SUFFIX}
debug KlayGE_InputEngine_MsgInput${KLAYGE_OUTPUT_SUFFIX}_d optimized KlayGE_InputEngine_MsgInput${KLAYGE_OUTPUT_SUFFIX}
debug KlayGE_AudioEngine_NullAudio${KLAYGE_OUTPUT_SUFFIX}_d optimized KlayGE_AudioEngine_NullAudio${KLAYGE_OUTPUT_SUFFIX}
debug KlayGE_AudioEngine_OpenAL${KLAYGE_OUTPUT_SUFFIX}_d optimized KlayGE_AudioEngine_OpenAL${KLAYGE_OUTPUT_SUFFIX}
debug KlayGE_ShowEngine_NullShow${KLAYGE_OUTPUT_SUFFIX}_d optimized KlayGE_ShowEngine_NullShow${KLAYGE_OUTPUT_SUFFIX}
debug KlayGE_ScriptEngine_NullScript${KLAYGE_OUTPUT_SUFFIX}_d optimized KlayGE_ScriptEngine_NullScript${KLAYGE_OUTPUT_SUFFIX}
debug KlayGE_AudioDataSource_NullAudioDataSource${KLAYGE_OUTPUT_SUFFIX}_d optimized KlayGE_AudioDataSource_NullAudioDataSource${KLAYGE_OUTPUT_SUFFIX}
Expand All @@ -263,6 +266,7 @@ MACRO(SETUP_TUTORIAL EXE_NAME)
debug kfont${KLAYGE_OUTPUT_SUFFIX}_d optimized kfont${KLAYGE_OUTPUT_SUFFIX}
${KLAYGE_FILESYSTEM_LIBRARY}
debug LZMA${KLAYGE_OUTPUT_SUFFIX}_d optimized LZMA${KLAYGE_OUTPUT_SUFFIX}
debug OpenAL${KLAYGE_OUTPUT_SUFFIX}_d optimized OpenAL${KLAYGE_OUTPUT_SUFFIX}
log android atomic)
ELSEIF(KLAYGE_PLATFORM_IOS)
SET(EXTRA_LINKED_LIBRARIES ${EXTRA_LINKED_LIBRARIES}
Expand Down
2 changes: 1 addition & 1 deletion KlayGE/Core/Src/Base/Context.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -286,7 +286,7 @@ namespace KlayGE
static char const * available_scfs_array[] = { "Python" };
#elif defined(KLAYGE_PLATFORM_ANDROID)
static char const * available_rfs_array[] = { "OpenGLES" };
static char const * available_afs_array[] = { "NullAudio" };
static char const * available_afs_array[] = { "OpenAL" };
static char const * available_adsfs_array[] = { "OggVorbis" };
static char const * available_ifs_array[] = { "MsgInput" };
static char const * available_sfs_array[] = { "NullShow" };
Expand Down
5 changes: 1 addition & 4 deletions KlayGE/Plugins/Include/KlayGE/OpenAL/OALAudio.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -36,10 +36,7 @@
#include <KlayGE/PreDeclare.hpp>
#include <KFL/Thread.hpp>

#ifdef KLAYGE_PLATFORM_WINDOWS
#include <al.h>
#include <alc.h>
#elif (defined KLAYGE_PLATFORM_DARWIN) || (defined KLAYGE_PLATFORM_IOS)
#if (defined KLAYGE_PLATFORM_DARWIN) || (defined KLAYGE_PLATFORM_IOS)
#include <OpenAL/al.h>
#include <OpenAL/alc.h>
#else
Expand Down

0 comments on commit b1fe6eb

Please sign in to comment.