woof/cmake/FindOpenAL.cmake
2023-11-12 07:08:39 +07:00

74 lines
2.1 KiB
CMake

#[=======================================================================[.rst:
FindOpenAL
----------
Finds Open Audio Library (OpenAL).
Projects using this module should use ``#include "al.h"`` to include the OpenAL
header file, **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 macOS uses the convention ``<OpenAL/al.h>``.
IMPORTED Targets
^^^^^^^^^^^^^^^^
``OpenAL::OpenAL``
The OpenAL library, if found.
Result Variables
^^^^^^^^^^^^^^^^
This module defines the following variables:
``OPENAL_FOUND``
If false, do not try to link to OpenAL
``OPENAL_INCLUDE_DIR``
OpenAL include directory
``OPENAL_LIBRARY``
Path to the OpenAL library
``OPENAL_VERSION_STRING``
Human-readable string containing the version of OpenAL
#]=======================================================================]
if(APPLE)
if(CMAKE_SYSTEM_PROCESSOR MATCHES "arm64")
set(ENV{PKG_CONFIG_PATH} "/opt/homebrew/opt/openal-soft/lib/pkgconfig")
else()
set(ENV{PKG_CONFIG_PATH} "/usr/local/opt/openal-soft/lib/pkgconfig")
endif()
endif()
find_package(PkgConfig QUIET)
pkg_check_modules(PC_OpenAL QUIET OpenAL)
find_path(OPENAL_INCLUDE_DIR al.h
PATH_SUFFIXES include/AL include/OpenAL include AL OpenAL
HINTS "${PC_OpenAL_INCLUDEDIR}")
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
PATH_SUFFIXES libx32 lib64 lib libs64 libs ${_OpenAL_ARCH_DIR}
HINTS "${PC_OpenAL_LIBDIR}")
unset(_OpenAL_ARCH_DIR)
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(OpenAL
REQUIRED_VARS OPENAL_LIBRARY OPENAL_INCLUDE_DIR
VERSION_VAR OPENAL_VERSION_STRING)
mark_as_advanced(OPENAL_LIBRARY OPENAL_INCLUDE_DIR)
if(OPENAL_FOUND AND NOT TARGET OpenAL::OpenAL)
add_library(OpenAL::OpenAL UNKNOWN IMPORTED)
set_target_properties(OpenAL::OpenAL PROPERTIES
IMPORTED_LOCATION "${OPENAL_LIBRARY}"
INTERFACE_INCLUDE_DIRECTORIES "${OPENAL_INCLUDE_DIR}")
endif()