aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--CMakeLists.txt20
-rw-r--r--cmake/FindOpenSL.cmake64
2 files changed, 73 insertions, 11 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 3614ec29..01baa040 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1080,17 +1080,15 @@ ENDIF()
# Check for OpenSL (Android) backend
OPTION(ALSOFT_REQUIRE_OPENSL "Require OpenSL backend" OFF)
-CHECK_INCLUDE_FILES("SLES/OpenSLES.h;SLES/OpenSLES_Android.h" HAVE_SLES_OPENSLES_ANDROID_H)
-IF(HAVE_SLES_OPENSLES_ANDROID_H)
- CHECK_SHARED_FUNCTION_EXISTS(slCreateEngine "SLES/OpenSLES.h" OpenSLES "" HAVE_LIBOPENSLES)
- IF(HAVE_LIBOPENSLES)
- OPTION(ALSOFT_BACKEND_OPENSL "Enable OpenSL backend" ON)
- IF(ALSOFT_BACKEND_OPENSL)
- SET(HAVE_OPENSL 1)
- SET(ALC_OBJS ${ALC_OBJS} Alc/backends/opensl.cpp Alc/backends/opensl.h)
- SET(BACKENDS "${BACKENDS} OpenSL,")
- SET(EXTRA_LIBS OpenSLES ${EXTRA_LIBS})
- ENDIF()
+FIND_PACKAGE(OpenSL)
+IF(OPENSL_FOUND)
+ OPTION(ALSOFT_BACKEND_OPENSL "Enable OpenSL backend" ON)
+ IF(ALSOFT_BACKEND_OPENSL)
+ SET(HAVE_OPENSL 1)
+ SET(ALC_OBJS ${ALC_OBJS} Alc/backends/opensl.cpp Alc/backends/opensl.h)
+ SET(BACKENDS "${BACKENDS} OpenSL,")
+ SET(EXTRA_LIBS ${OPENSL_LIBRARIES} ${EXTRA_LIBS})
+ SET(INC_PATHS ${INC_PATHS} ${OPENSL_INCLUDE_DIRS})
ENDIF()
ENDIF()
IF(ALSOFT_REQUIRE_OPENSL AND NOT HAVE_OPENSL)
diff --git a/cmake/FindOpenSL.cmake b/cmake/FindOpenSL.cmake
new file mode 100644
index 00000000..1bd72d10
--- /dev/null
+++ b/cmake/FindOpenSL.cmake
@@ -0,0 +1,64 @@
+# - Find OpenSL
+# Find the OpenSL libraries
+#
+# This module defines the following variables:
+# OPENSL_FOUND - True if OPENSL_INCLUDE_DIR & OPENSL_LIBRARY are set
+# OPENSL_INCLUDE_DIRS - where to find SLES/OpenSLES.h, etc.
+# OPENSL_LIBRARIES - the OpenSL library
+#
+
+#=============================================================================
+# Copyright 2009-2011 Kitware, Inc.
+# Copyright 2009-2011 Philip Lowman <[email protected]>
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+# * Redistributions of source code must retain the above copyright notice,
+# this list of conditions and the following disclaimer.
+#
+# * Redistributions in binary form must reproduce the above copyright notice,
+# this list of conditions and the following disclaimer in the documentation
+# and/or other materials provided with the distribution.
+#
+# * The names of Kitware, Inc., the Insight Consortium, or the names of
+# any consortium members, or of any contributors, may not be used to
+# endorse or promote products derived from this software without
+# specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS ``AS IS''
+# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE FOR
+# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#=============================================================================
+
+find_path(OPENSL_INCLUDE_DIR NAMES SLES/OpenSLES.h
+ DOC "The OpenSL include directory"
+)
+find_path(OPENSL_ANDROID_INCLUDE_DIR NAMES SLES/OpenSLES_Android.h
+ DOC "The OpenSL Android include directory"
+)
+
+find_library(OPENSL_LIBRARY NAMES OpenSL
+ DOC "The OpenSL library"
+)
+
+# handle the QUIETLY and REQUIRED arguments and set OPENSL_FOUND to TRUE if
+# all listed variables are TRUE
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(OPENSL REQUIRED_VARS OPENSL_LIBRARY OPENSL_INCLUDE_DIR
+ OPENSL_ANDROID_INCLUDE_DIR)
+
+if(OPENSL_FOUND)
+ set(OPENSL_LIBRARIES ${OPENSL_LIBRARY})
+ set(OPENSL_INCLUDE_DIRS ${OPENSL_INCLUDE_DIR} ${OPENSL_ANDROID_INCLUDE_DIR})
+endif()
+
+mark_as_advanced(OPENSL_INCLUDE_DIR OPENSL_ANDROID_INCLUDE_DIR OPENSL_LIBRARY)