Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: FrictionalGames/OALWrapper
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: master
Choose a base ref
...
head repository: dima424658/OALWrapper
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: master
Choose a head ref
Able to merge. These branches can be automatically merged.
  • 3 commits
  • 26 files changed
  • 1 contributor

Commits on Aug 22, 2022

  1. Fix linux build

    dima424658 committed Aug 22, 2022

    Unverified

    This commit is not signed, but one or more authors requires that any commit attributed to them is signed.
    Copy the full SHA
    c70b378 View commit details
  2. Remove SDL dependency

    dima424658 committed Aug 22, 2022

    Unverified

    This commit is not signed, but one or more authors requires that any commit attributed to them is signed.
    Copy the full SHA
    0ccf50d View commit details

Commits on Oct 4, 2022

  1. macos build

    dima424658 committed Oct 4, 2022

    Unverified

    This commit is not signed, but one or more authors requires that any commit attributed to them is signed.
    Copy the full SHA
    33588f5 View commit details
273 changes: 47 additions & 226 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,241 +1,62 @@
cmake_minimum_required (VERSION 2.8)
project (OALWrapper)
cmake_minimum_required (VERSION 3.24)
project (OALWrapper VERSION 1.0)

set(OALWrapper_VERSION_MAJOR 1)
set(OALWrapper_VERSION_MINOR 0)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMakeModules")

SET(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/CMakeScripts)

SET(PRIVATE_LIB_DIR ""
CACHE PATH "Location of local private library path to use"
)
IF(NOT APP_PRIVATE_LIB_DIR AND PRIVATE_LIB_DIR)
SET(APP_PRIVATE_LIB_DIR ${PRIVATE_LIB_DIR})
ENDIF()

OPTION(USE_SDL2 "Use SDL2 instead of SDL1.2" OFF)
OPTION(FORCE32 "Force a 32 bit build on 64bit linux" OFF)

IF(APP_PRIVATE_LIB_DIR AND "${CMAKE_SYSTEM}" MATCHES "Linux")
IF(NOT EXISTS ${APP_PRIVATE_LIB_DIR}/include)
MESSAGE(FATAL_ERROR "folder named include not found in private lib dir ${APP_PRIVATE_LIB_DIR}")
ENDIF()
SET(EXTRA_INCLUDE_DIR ${APP_PRIVATE_LIB_DIR}/include)
IF(NOT PRIVATE_LIB_SUFFIX)
IF(CMAKE_SIZEOF_VOID_P MATCHES "8" AND NOT(FORCE32))
if(EXISTS ${APP_PRIVATE_LIB_DIR}/linux64)
SET(PRIVATE_LIB_SUFFIX "linux64")
else(EXISTS ${APP_PRIVATE_LIB_DIR}/lib64)
SET(PRIVATE_LIB_SUFFIX "lib64")
endif()
ELSE()
if(EXISTS ${APP_PRIVATE_LIB_DIR}/linux32)
SET(PRIVATE_LIB_SUFFIX "linux32")
elseif(EXISTS ${APP_PRIVATE_LIB_DIR}/linux)
SET(PRIVATE_LIB_SUFFIX "linux")
else(EXISTS ${APP_PRIVATE_LIB_DIR}/lib)
SET(PRIVATE_LIB_SUFFIX "lib")
endif()
ENDIF()
ENDIF()
IF(NOT PRIVATE_LIB_SUFFIX)
MESSAGE(FATAL_ERROR "could not find lib directory in private lib dir ${APP_PRIVATE_LIB_DIR}")
ENDIF()

FIND_LIBRARY(OGG_LIBRARY ogg PATHS ${APP_PRIVATE_LIB_DIR}/${PRIVATE_LIB_SUFFIX} PATH_SUFFIXES lib NO_DEFAULT_PATH)
FIND_LIBRARY(VORBIS_LIBRARY vorbis PATHS ${APP_PRIVATE_LIB_DIR}/${PRIVATE_LIB_SUFFIX} PATH_SUFFIXES lib NO_DEFAULT_PATH)
FIND_LIBRARY(VORBISFILE_LIBRARY vorbisfile PATHS ${APP_PRIVATE_LIB_DIR}/${PRIVATE_LIB_SUFFIX} PATH_SUFFIXES lib NO_DEFAULT_PATH)

FIND_LIBRARY(OPENAL_LIBRARY openal PATHS ${APP_PRIVATE_LIB_DIR}/${PRIVATE_LIB_SUFFIX} PATH_SUFFIXES lib NO_DEFAULT_PATH)

IF(USE_SDL2)
FIND_LIBRARY(SDL_LIBRARY SDL2 PATHS ${APP_PRIVATE_LIB_DIR}/${PRIVATE_LIB_SUFFIX} PATH_SUFFIXES lib NO_DEFAULT_PATH)
FIND_PATH(SDL_INCLUDE_DIR SDL.h
PATHS ${APP_PRIVATE_LIB_DIR}/include
PATH_SUFFIXES SDL2
NO_DEFAULT_PATH
)
ELSE()
FIND_LIBRARY(SDL_LIBRARY SDL PATHS ${APP_PRIVATE_LIB_DIR}/${PRIVATE_LIB_SUFFIX} PATH_SUFFIXES lib NO_DEFAULT_PATH)
FIND_PATH(SDL_INCLUDE_DIR SDL.h
PATHS ${APP_PRIVATE_LIB_DIR}/include
PATH_SUFFIXES SDL
NO_DEFAULT_PATH
)
ENDIF()
ELSEIF(APP_PRIVATE_LIB_DIR AND EMSCRIPTEN)
SET(PRIVATE_LIB_SUFFIX emscripten)
SET(EXTRA_INCLUDE_DIR ${APP_PRIVATE_LIB_DIR}/include)
FIND_LIBRARY(OGG_LIBRARY ogg PATHS ${APP_PRIVATE_LIB_DIR}/${PRIVATE_LIB_SUFFIX} NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH)
FIND_LIBRARY(VORBIS_LIBRARY vorbis PATHS ${APP_PRIVATE_LIB_DIR}/${PRIVATE_LIB_SUFFIX} NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH)
FIND_LIBRARY(VORBISFILE_LIBRARY vorbisfile PATHS ${APP_PRIVATE_LIB_DIR}/${PRIVATE_LIB_SUFFIX} NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH)

IF(USE_SDL2)
FIND_LIBRARY(SDL_LIBRARY SDL2 PATHS ${APP_PRIVATE_LIB_DIR}/${PRIVATE_LIB_SUFFIX} NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH)
ELSE()
MESSAGE(FATAL_ERROR "SDL1.2 not supported on Emscripten")
ENDIF()

FIND_PATH(SDL_INCLUDE_DIR SDL.h
PATHS ${APP_PRIVATE_LIB_DIR}/include
PATH_SUFFIXES SDL2
NO_DEFAULT_PATH
NO_CMAKE_FIND_ROOT_PATH
)

# We don't need to find an OpenAL library as it's built-in to emscripten
unset(OPENAL_LIBRARY)
unset(OPENAL_INCLUDE_DIR)
ELSEIF(APP_PRIVATE_LIB_DIR AND APPLE)
if(IOS)
SET(PRIVATE_LIB_SUFFIX ios)
SET(EXTRA_INCLUDE_DIR ${APP_PRIVATE_LIB_DIR}/include)
FIND_LIBRARY(OGG_LIBRARY ogg PATHS ${APP_PRIVATE_LIB_DIR}/${PRIVATE_LIB_SUFFIX} NO_DEFAULT_PATH)
FIND_LIBRARY(VORBIS_LIBRARY vorbis PATHS ${APP_PRIVATE_LIB_DIR}/${PRIVATE_LIB_SUFFIX} NO_DEFAULT_PATH)
FIND_LIBRARY(VORBISFILE_LIBRARY vorbisfile PATHS ${APP_PRIVATE_LIB_DIR}/${PRIVATE_LIB_SUFFIX} NO_DEFAULT_PATH)
else()
IF(NOT PRIVATE_LIB_SUFFIX)
SET(PRIVATE_LIB_SUFFIX macosx)
ENDIF()
SET(EXTRA_INCLUDE_DIR ${APP_PRIVATE_LIB_DIR}/include)
FIND_LIBRARY(OGG_LIBRARY Ogg PATHS ${APP_PRIVATE_LIB_DIR}/${PRIVATE_LIB_SUFFIX} NO_DEFAULT_PATH)
FIND_LIBRARY(VORBIS_LIBRARY Vorbis PATHS ${APP_PRIVATE_LIB_DIR}/${PRIVATE_LIB_SUFFIX} NO_DEFAULT_PATH)
if (VORBIS_LIBRARY AND NOT VORBIS_LIBRARY MATCHES /.framework$/)
FIND_LIBRARY(VORBISFILE_LIBRARY vorbisfile PATHS ${APP_PRIVATE_LIB_DIR}/${PRIVATE_LIB_SUFFIX} NO_DEFAULT_PATH)
endif()
endif()

IF(USE_SDL2)
FIND_LIBRARY(SDL_LIBRARY SDL2 PATHS ${APP_PRIVATE_LIB_DIR}/${PRIVATE_LIB_SUFFIX} NO_DEFAULT_PATH)
ELSE()
FIND_LIBRARY(SDL_LIBRARY SDL PATHS ${APP_PRIVATE_LIB_DIR}/${PRIVATE_LIB_SUFFIX} NO_DEFAULT_PATH)
ENDIF()

FIND_PATH(SDL_INCLUDE_DIR SDL.h
PATHS ${APP_PRIVATE_LIB_DIR}/include
PATH_SUFFIXES SDL2
NO_DEFAULT_PATH
)

FIND_PACKAGE(OpenAL)
ELSE()
FIND_PACKAGE(OGG)
FIND_PACKAGE(Vorbis)
IF(NOT(APPLE))
FIND_PACKAGE(VorbisFile)
ENDIF()
FIND_PACKAGE(OpenAL)
IF(USE_SDL2)
FIND_PACKAGE(SDL2)
ELSE()
FIND_PACKAGE(SDL)
ENDIF()

LIST(APPEND OALWRAPPER_INCLUDE_PATHS
PRIVATE ${OGG_INCLUDE_DIR}
PRIVATE ${VORBIS_INCLUDE_DIR}
PUBLIC ${OPENAL_INCLUDE_DIR}
)
if(VORBISFILE_INCLUDE_DIR)
LIST(APPEND OALWRAPPER_INCLUDE_PATHS
PRIVATE ${VORBISFILE_INCLUDE_DIR}
)
endif()
ENDIF()

LIST(APPEND OALWRAPPER_INCLUDE_PATHS
PUBLIC include
PRIVATE ${SDL_INCLUDE_DIR}
)
if(EXTRA_INCLUDE_DIR)
LIST(APPEND OALWRAPPER_INCLUDE_PATHS
PRIVATE ${EXTRA_INCLUDE_DIR}
)
if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
add_compile_options(-fdiagnostics-color=always)
elseif("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
add_compile_options(-fcolor-diagnostics)
endif()

SET(all_sources
sources/OAL_AudioData.cpp
sources/OAL_Buffer.cpp
sources/OAL_Device.cpp
sources/OAL_Effect.cpp
sources/OAL_Effect_Reverb.cpp
sources/OAL_EffectSlot.cpp
sources/OAL_EFX.cpp
sources/OAL_EFXManager.cpp
sources/OAL_Filter.cpp
sources/OAL_Helper.cpp
sources/OAL_Init.cpp
sources/OAL_Loaders.cpp
sources/OAL_LoggerObject.cpp
sources/OAL_OggSample.cpp
sources/OAL_OggStream.cpp
sources/OAL_WAVSample.cpp
sources/OAL_CustomStream.cpp
sources/OAL_Playback.cpp
sources/OAL_Sample.cpp
sources/OAL_Source.cpp
sources/OAL_SourceManager.cpp
sources/OAL_Stream.cpp
sources/OAL_Types.cpp
${CMAKE_CURRENT_SOURCE_DIR}/sources/OAL_AudioData.cpp
${CMAKE_CURRENT_SOURCE_DIR}/sources/OAL_Buffer.cpp
${CMAKE_CURRENT_SOURCE_DIR}/sources/OAL_Device.cpp
${CMAKE_CURRENT_SOURCE_DIR}/sources/OAL_Effect.cpp
${CMAKE_CURRENT_SOURCE_DIR}/sources/OAL_Effect_Reverb.cpp
${CMAKE_CURRENT_SOURCE_DIR}/sources/OAL_EffectSlot.cpp
${CMAKE_CURRENT_SOURCE_DIR}/sources/OAL_EFX.cpp
${CMAKE_CURRENT_SOURCE_DIR}/sources/OAL_EFXManager.cpp
${CMAKE_CURRENT_SOURCE_DIR}/sources/OAL_Filter.cpp
${CMAKE_CURRENT_SOURCE_DIR}/sources/OAL_Helper.cpp
${CMAKE_CURRENT_SOURCE_DIR}/sources/OAL_Init.cpp
${CMAKE_CURRENT_SOURCE_DIR}/sources/OAL_Loaders.cpp
${CMAKE_CURRENT_SOURCE_DIR}/sources/OAL_LoggerObject.cpp
${CMAKE_CURRENT_SOURCE_DIR}/sources/OAL_OggSample.cpp
${CMAKE_CURRENT_SOURCE_DIR}/sources/OAL_OggStream.cpp
${CMAKE_CURRENT_SOURCE_DIR}/sources/OAL_WAVSample.cpp
${CMAKE_CURRENT_SOURCE_DIR}/sources/OAL_CustomStream.cpp
${CMAKE_CURRENT_SOURCE_DIR}/sources/OAL_Playback.cpp
${CMAKE_CURRENT_SOURCE_DIR}/sources/OAL_Sample.cpp
${CMAKE_CURRENT_SOURCE_DIR}/sources/OAL_Source.cpp
${CMAKE_CURRENT_SOURCE_DIR}/sources/OAL_SourceManager.cpp
${CMAKE_CURRENT_SOURCE_DIR}/sources/OAL_Stream.cpp
${CMAKE_CURRENT_SOURCE_DIR}/sources/OAL_Types.cpp
)

SET(all_includes
include//OALWrapper/OAL_AudioData.h
include//OALWrapper/OAL_Buffer.h
include//OALWrapper/OAL_CustomStream.h
include//OALWrapper/OAL_Device.h
include//OALWrapper/OAL_Effect.h
include//OALWrapper/OAL_Effect_Reverb.h
include//OALWrapper/OAL_EffectSlot.h
include//OALWrapper/OAL_EFX.h
include//OALWrapper/OAL_EFXManager.h
include//OALWrapper/OAL_Filter.h
include//OALWrapper/OAL_Funcs.h
include//OALWrapper/OAL_Helper.h
include//OALWrapper/OAL_Init.h
include//OALWrapper/OAL_Loaders.h
include//OALWrapper/OAL_LoggerObject.h
include//OALWrapper/OAL_LowLevelObject.h
include//OALWrapper/OAL_OggSample.h
include//OALWrapper/OAL_OggStream.h
include//OALWrapper/OAL_Playback.h
include//OALWrapper/OAL_Sample.h
include//OALWrapper/OAL_Source.h
include//OALWrapper/OAL_SourceManager.h
include//OALWrapper/OAL_Stream.h
include//OALWrapper/OAL_Types.h
include//OALWrapper/OAL_WAVSample.h
)
add_library(OALWrapper STATIC ${all_sources})

IF(USE_SDL2)
add_definitions(-DUSE_SDL2)
ENDIF()
find_package(Vorbis REQUIRED)
find_package(OpenAL REQUIRED)

add_library(OALWrapper STATIC
${all_sources}
${all_includes}
)
TARGET_LINK_LIBRARIES(OALWrapper
${VORBISFILE_LIBRARY}
${VORBIS_LIBRARY}
${OGG_LIBRARY}
${OPENAL_LIBRARY}
${SDL_LIBRARY}
)
TARGET_INCLUDE_DIRECTORIES(OALWrapper
${OALWRAPPER_INCLUDE_PATHS}
)
target_link_libraries(OALWrapper Vorbis::vorbisfile OpenAL::OpenAL)
target_include_directories(OALWrapper PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include)

ADD_EXECUTABLE(SimpleTest EXCLUDE_FROM_ALL tests/Simple/main.cpp)
TARGET_LINK_LIBRARIES(SimpleTest OALWrapper)
# Tests
add_executable(SimpleTest EXCLUDE_FROM_ALL tests/Simple/main.cpp)
target_link_libraries(SimpleTest OALWrapper)

ADD_EXECUTABLE(PlaySound EXCLUDE_FROM_ALL tests/PlaySound/main.cpp)
TARGET_LINK_LIBRARIES(PlaySound OALWrapper)
add_executable(PlaySound EXCLUDE_FROM_ALL tests/PlaySound/main.cpp)
target_link_libraries(PlaySound OALWrapper)

ADD_EXECUTABLE(Playlist EXCLUDE_FROM_ALL tests/Playlist/main.cpp)
TARGET_LINK_LIBRARIES(Playlist OALWrapper)
add_executable(Playlist EXCLUDE_FROM_ALL tests/Playlist/main.cpp)
target_link_libraries(Playlist OALWrapper)

ADD_EXECUTABLE(CustomStream EXCLUDE_FROM_ALL tests/CustomStream/main.cpp)
TARGET_LINK_LIBRARIES(CustomStream OALWrapper)
add_executable(CustomStream EXCLUDE_FROM_ALL tests/CustomStream/main.cpp)
target_link_libraries(CustomStream OALWrapper)

# Exports
#SET(OALWRAPPER_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/include PARENT_SCOPE)
26 changes: 26 additions & 0 deletions CMakeModules/FindOgg.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
find_path(Ogg_INCLUDE_DIR
NAMES
ogg/ogg.h
DOC "ogg include directory")
mark_as_advanced(Ogg_INCLUDE_DIR)

find_library(Ogg_LIBRARY
NAMES
ogg
DOC "ogg library")
mark_as_advanced(Ogg_LIBRARY)

include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(Ogg REQUIRED_VARS Ogg_LIBRARY Ogg_INCLUDE_DIR)

if (Ogg_FOUND)
set(Ogg_LIBRARIES "${Ogg_LIBRARY}")
set(Ogg_INCLUDE_DIRS "${Ogg_INCLUDE_DIR}")

if (NOT TARGET Ogg::ogg)
add_library(Ogg::ogg UNKNOWN IMPORTED)
set_target_properties(Ogg::ogg PROPERTIES
IMPORTED_LOCATION "${Ogg_LIBRARY}"
INTERFACE_INCLUDE_DIRECTORIES "${Ogg_INCLUDE_DIR}")
endif ()
endif ()
Loading