Skip to content

Commit

Permalink
Merge pull request #4833 from Orphis/cmake_audiocommon
Browse files Browse the repository at this point in the history
More CMake updates for AudioCommon dependencies
  • Loading branch information
lioncash committed Feb 7, 2017
2 parents eb3c172 + d1eaa59 commit 649fc39
Show file tree
Hide file tree
Showing 4 changed files with 188 additions and 36 deletions.
31 changes: 1 addition & 30 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -421,19 +421,6 @@ if (OPENGL_GL)
include_directories(${OPENGL_INCLUDE_DIR})
endif()

if(ENABLE_AO)
check_lib(AO ao ao QUIET)
if(AO_FOUND)
add_definitions(-DHAVE_AO=1)
message(STATUS "ao found, enabling ao sound backend")
else()
add_definitions(-DHAVE_AO=0)
message(STATUS "ao NOT found, disabling ao sound backend")
endif()
else()
message(STATUS "ao explicitly disabled, disabling ao sound backend")
endif()

if(ENABLE_BLUEZ)
check_lib(BLUEZ bluez bluez QUIET)
if(BLUEZ_FOUND)
Expand All @@ -460,23 +447,6 @@ else()
message(STATUS "PulseAudio explicitly disabled, disabling PulseAudio sound backend")
endif()

if(ENABLE_OPENAL)
if(WIN32)
set(ENV{OPENALDIR} ${CMAKE_CURRENT_LIST_DIR}/Externals/OpenAL)
endif()
find_package(OpenAL)
if(OPENAL_FOUND)
add_definitions(-DHAVE_OPENAL=1)
include_directories(${OPENAL_INCLUDE_DIR})
message(STATUS "OpenAL found, enabling OpenAL sound backend")
else()
add_definitions(-DHAVE_OPENAL=0)
message(STATUS "OpenAL NOT found, disabling OpenAL sound backend")
endif()
else()
message(STATUS "OpenAL explicitly disabled, disabling OpenAL sound backend")
endif()

if(ENABLE_LLVM)
find_package(LLVM)
if (LLVM_FOUND)
Expand Down Expand Up @@ -691,6 +661,7 @@ else()
set(PNG png)
endif()

find_package(OpenAL)
if(OPENAL_FOUND)
if(NOT APPLE)
check_lib(SOUNDTOUCH soundtouch SoundTouch soundtouch/SoundTouch.h QUIET)
Expand Down
42 changes: 42 additions & 0 deletions CMakeTests/FindAO.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
# - Find AO library
# This module defines
# AO_INCLUDE_DIR
# AO_LIBRARIES
# AO_FOUND
#
# vim: expandtab sw=4 ts=4 sts=4:

include(FindPkgConfig)
pkg_check_modules (AO_PKG QUIET ao)

find_path(AO_INCLUDE_DIR NAMES ao/ao.h
PATHS
${AO_PKG_INCLUDE_DIRS}
/usr/include/ao
/usr/include
/usr/local/include/ao
/usr/local/include
)

find_library(AO_LIBRARIES NAMES ao
PATHS
${AO_PKG_LIBRARY_DIRS}
/usr/lib
/usr/local/lib
)

include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(AO
REQUIRED_VARS AO_LIBRARIES AO_INCLUDE_DIR)

if(AO_FOUND)
if(NOT TARGET AO::AO)
add_library(AO::AO UNKNOWN IMPORTED)
set_target_properties(AO::AO PROPERTIES
IMPORTED_LOCATION ${AO_LIBRARIES}
INTERFACE_INCLUDE_DIRECTORIES ${AO_INCLUDE_DIR}
)
endif()
endif()

mark_as_advanced(AO_INCLUDE_DIR AO_LIBRARIES)
118 changes: 118 additions & 0 deletions CMakeTests/FindOpenAL.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,118 @@
# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
# file Copyright.txt or https://cmake.org/licensing for details.

#.rst:
# FindOpenAL
# ----------
#
#
#
# Locate OpenAL This module defines OPENAL_LIBRARY OPENAL_FOUND, if
# false, do not try to link to OpenAL OPENAL_INCLUDE_DIR, where to find
# the headers
#
# $OPENALDIR is an environment variable that would correspond to the
# ./configure --prefix=$OPENALDIR used in building OpenAL.
#
# Created by Eric Wing. This was influenced by the FindSDL.cmake
# module.

# This makes the presumption that you are include al.h like
# #include "al.h"
# and not
# #include <AL/al.h>
# The reason for this is that the latter is not entirely portable.
# Windows/Creative Labs does not by default put their headers in AL/ and
# OS X uses the convention <OpenAL/al.h>.
#
# For Windows, Creative Labs seems to have added a registry key for their
# OpenAL 1.1 installer. I have added that key to the list of search paths,
# however, the key looks like it could be a little fragile depending on
# if they decide to change the 1.00.0000 number for bug fix releases.
# Also, they seem to have laid down groundwork for multiple library platforms
# which puts the library in an extra subdirectory. Currently there is only
# Win32 and I have hardcoded that here. This may need to be adjusted as
# platforms are introduced.
# The OpenAL 1.0 installer doesn't seem to have a useful key I can use.
# I do not know if the Nvidia OpenAL SDK has a registry key.
#
# For OS X, remember that OpenAL was added by Apple in 10.4 (Tiger).
# To support the framework, I originally wrote special framework detection
# code in this module which I have now removed with CMake's introduction
# of native support for frameworks.
# In addition, OpenAL is open source, and it is possible to compile on Panther.
# Furthermore, due to bugs in the initial OpenAL release, and the
# transition to OpenAL 1.1, it is common to need to override the built-in
# framework.
# Per my request, CMake should search for frameworks first in
# the following order:
# ~/Library/Frameworks/OpenAL.framework/Headers
# /Library/Frameworks/OpenAL.framework/Headers
# /System/Library/Frameworks/OpenAL.framework/Headers
#
# On OS X, this will prefer the Framework version (if found) over others.
# People will have to manually change the cache values of
# OPENAL_LIBRARY to override this selection or set the CMake environment
# CMAKE_INCLUDE_PATH to modify the search paths.

find_path(OPENAL_INCLUDE_DIR al.h
HINTS
ENV OPENALDIR
PATH_SUFFIXES include/AL include/OpenAL include
PATHS
~/Library/Frameworks
/Library/Frameworks
/sw # Fink
/opt/local # DarwinPorts
/opt/csw # Blastwave
/opt
[HKEY_LOCAL_MACHINE\\SOFTWARE\\Creative\ Labs\\OpenAL\ 1.1\ Software\ Development\ Kit\\1.00.0000;InstallDir]
)

if(CMAKE_SIZEOF_VOID_P EQUAL 8)
set(_OpenAL_ARCH_DIR libs/Win64)
else()
set(_OpenAL_ARCH_DIR libs/Win32)
endif()

find_library(OPENAL_LIBRARY
NAMES OpenAL al openal OpenAL32
HINTS
ENV OPENALDIR
PATH_SUFFIXES lib64 lib libs64 libs ${_OpenAL_ARCH_DIR}
PATHS
~/Library/Frameworks
/Library/Frameworks
/sw
/opt/local
/opt/csw
/opt
[HKEY_LOCAL_MACHINE\\SOFTWARE\\Creative\ Labs\\OpenAL\ 1.1\ Software\ Development\ Kit\\1.00.0000;InstallDir]
)

unset(_OpenAL_ARCH_DIR)

include(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(OpenAL DEFAULT_MSG OPENAL_LIBRARY OPENAL_INCLUDE_DIR)

if(OPENAL_FOUND)
if(NOT TARGET OpenAL::OpenAL)
add_library(OpenAL::OpenAL UNKNOWN IMPORTED)
if(OPENAL_LIBRARY MATCHES "/([^/]+)\\.framework$")
set(_al_fw "${OPENAL_LIBRARY}/${CMAKE_MATCH_1}")
if(EXISTS "${_al_fw}.tbd")
set(_al_fw "${_al_fw}.tbd")
endif()
set_target_properties(OpenAL::OpenAL PROPERTIES
IMPORTED_LOCATION "${_al_fw}")
else()
set_target_properties(OpenAL::OpenAL PROPERTIES
IMPORTED_LOCATION "${OPENAL_LIBRARY}")
endif()
set_target_properties(OpenAL::OpenAL PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES ${OPENAL_INCLUDE_DIR}
)
endif()
endif()

mark_as_advanced(OPENAL_LIBRARY OPENAL_INCLUDE_DIR)
33 changes: 27 additions & 6 deletions Source/Core/AudioCommon/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -29,14 +29,35 @@ else()
message(STATUS "ALSA explicitly disabled, disabling ALSA sound backend")
endif()

if(AO_FOUND)
target_sources(audiocommon PRIVATE AOSoundStream.cpp)
target_link_libraries(audiocommon PRIVATE ${AO_LIBRARIES})
if(ENABLE_AO)
find_package(AO)
if(AO_FOUND)
message(STATUS "ao found, enabling ao sound backend")
target_sources(audiocommon PRIVATE AOSoundStream.cpp)
target_link_libraries(audiocommon PRIVATE AO::AO)
target_compile_definitions(audiocommon PRIVATE HAVE_AO=1)
else()
message(STATUS "ao NOT found, disabling ao sound backend")
endif()
else()
message(STATUS "ao explicitly disabled, disabling ao sound backend")
endif()

if(OPENAL_FOUND)
target_sources(audiocommon PRIVATE OpenALStream.cpp aldlist.cpp)
target_link_libraries(audiocommon PRIVATE ${OPENAL_LIBRARY} SoundTouch)
if(ENABLE_OPENAL)
if(WIN32)
set(ENV{OPENALDIR} ${PROJECT_SOURCE_DIR}/Externals/OpenAL)
endif()
find_package(OpenAL)
if(OPENAL_FOUND)
message(STATUS "OpenAL found, enabling OpenAL sound backend")
target_sources(audiocommon PRIVATE OpenALStream.cpp aldlist.cpp)
target_link_libraries(audiocommon PRIVATE OpenAL::OpenAL SoundTouch)
target_compile_definitions(audiocommon PRIVATE HAVE_OPENAL=1)
else()
message(STATUS "OpenAL NOT found, disabling OpenAL sound backend")
endif()
else()
message(STATUS "OpenAL explicitly disabled, disabling OpenAL sound backend")
endif()

if(PULSEAUDIO_FOUND)
Expand Down

0 comments on commit 649fc39

Please sign in to comment.