| # Distributed under the OSI-approved BSD 3-Clause License. See accompanying | |
| # file Copyright.txt or https://cmake.org/licensing for details. | |
| #[=======================================================================[.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>``. | |
| Hints | |
| ^^^^^ | |
| Environment variable ``$OPENALDIR`` can be used to set the prefix of OpenAL | |
| installation to be found. | |
| By default on macOS, system framework is search first. In other words, | |
| OpenAL is searched in the following order: | |
| 1. System framework: ``/System/Library/Frameworks``, whose priority can be | |
| changed via setting the :variable:`CMAKE_FIND_FRAMEWORK` variable. | |
| 2. Environment variable ``$OPENALDIR``. | |
| 3. System paths. | |
| 4. User-compiled framework: ``~/Library/Frameworks``. | |
| 5. Manually compiled framework: ``/Library/Frameworks``. | |
| 6. Add-on package: ``/opt``. | |
| 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 | |
| #]=======================================================================] | |
| # 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. | |
| find_path(OPENAL_INCLUDE_DIR al.h | |
| HINTS | |
| ENV OPENALDIR | |
| PATHS | |
| ~/Library/Frameworks | |
| /Library/Frameworks | |
| /opt | |
| [HKEY_LOCAL_MACHINE\\SOFTWARE\\Creative\ Labs\\OpenAL\ 1.1\ Software\ Development\ Kit\\1.00.0000;InstallDir] | |
| PATH_SUFFIXES include/AL include/OpenAL include AL OpenAL | |
| ) | |
| 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 | |
| PATHS | |
| ~/Library/Frameworks | |
| /Library/Frameworks | |
| /opt | |
| [HKEY_LOCAL_MACHINE\\SOFTWARE\\Creative\ Labs\\OpenAL\ 1.1\ Software\ Development\ Kit\\1.00.0000;InstallDir] | |
| PATH_SUFFIXES libx32 lib64 lib libs64 libs ${_OpenAL_ARCH_DIR} | |
| ) | |
| unset(_OpenAL_ARCH_DIR) | |
| include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake) | |
| 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) |