shithub: choc

Download patch

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()