ref: dc054603a1f95f03ea9f6a7b79cda23032c5c2a6
parent: 8b8c8bf3d131445ae13cdfacdb7bb393561da0c4
author: Alex Mayfield <[email protected]>
date: Thu May 31 15:12:31 EDT 2018
libsamplerate support Works on Linux, at least...
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -29,6 +29,12 @@
find_package(SDL2_mixer 2.0.0)
find_package(SDL2_net 2.0.0)
+# Check for libsamplerate.
+find_package(samplerate)
+if(SAMPLERATE_FOUND)
+ set(HAVE_LIBSAMPLERATE TRUE)
+endif()
+
# Check for libpng.
find_package(PNG)
if(PNG_FOUND)
--- /dev/null
+++ b/cmake/Findsamplerate.cmake
@@ -1,0 +1,71 @@
+# Findsamplerate.cmake
+#
+# Copyright (c) 2018, Alex Mayfield <[email protected]>
+# All rights reserved.
+#
+# 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.
+# * Neither the name of the <organization> nor the
+# names of its contributors may be used to endorse or promote products
+# derived from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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 <COPYRIGHT HOLDER> 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.
+#
+# Currently works with the following generators:
+# - Unix Makefiles
+# - Ninja
+# - Visual Studio (TODO)
+
+# Cache variable that allows you to point CMake at a directory containing
+# an extracted development library.
+set(SAMPLERATE_DIR "${SAMPLERATE_DIR}" CACHE PATH "Location of samplerate library directory")
+
+# Use pkg-config to find library locations in *NIX environments.
+find_package(PkgConfig QUIET)
+if(PKG_CONFIG_FOUND)
+ pkg_search_module(PC_SAMPLERATE QUIET samplerate)
+endif()
+
+# Find the include directory.
+find_path(SAMPLERATE_INCLUDE_DIR "samplerate.h"
+ HINTS ${PC_SAMPLERATE_INCLUDE_DIRS})
+
+# Find the version. I don't know if there is a correct way to find this on
+# Windows - the config.h in the tarball is wrong for 0.1.19.
+if(PC_SAMPLERATE_VERSION)
+ set(SAMPLERATE_VERSION "${PC_SAMPLERATE_VERSION}")
+endif()
+
+# Find the library.
+find_library(SAMPLERATE_LIBRARY "samplerate"
+ HINTS ${PC_SAMPLERATE_LIBRARY_DIRS})
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(samplerate
+ FOUND_VAR SAMPLERATE_FOUND
+ REQUIRED_VARS SAMPLERATE_INCLUDE_DIR SAMPLERATE_LIBRARY
+ VERSION_VAR SAMPLERATE_VERSION
+)
+
+if(SAMPLERATE_FOUND)
+ # Imported target.
+ add_library(samplerate::samplerate UNKNOWN IMPORTED)
+ set_target_properties(samplerate::samplerate PROPERTIES
+ INTERFACE_COMPILE_OPTIONS "${PC_SAMPLERATE_CFLAGS_OTHER}"
+ INTERFACE_INCLUDE_DIRECTORIES "${SAMPLERATE_INCLUDE_DIR}"
+ IMPORTED_LOCATION "${SAMPLERATE_LIBRARY}")
+endif()
--- a/config.h.cin
+++ b/config.h.cin
@@ -4,6 +4,7 @@
#cmakedefine PACKAGE_STRING "@PACKAGE_STRING@"
#cmakedefine PROGRAM_PREFIX "@PROGRAM_PREFIX@"
+#cmakedefine HAVE_LIBSAMPLERATE
#cmakedefine HAVE_LIBPNG
#cmakedefine01 HAVE_DECL_STRCASECMP
#cmakedefine01 HAVE_DECL_STRNCASECMP
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -106,6 +106,9 @@
set(SOURCE_FILES_WITH_DEH ${SOURCE_FILES} ${DEHACKED_SOURCE_FILES})
set(EXTRA_LIBS textscreen pcsound opl SDL2::SDL2main SDL2::SDL2 SDL2::mixer SDL2::net)
+if(SAMPLERATE_FOUND)
+ list(APPEND EXTRA_LIBS samplerate::samplerate)
+endif()
if(PNG_FOUND)
list(APPEND EXTRA_LIBS PNG::PNG)
endif()