media-libs/libsoundio: new ebuild github/pr/65
authorDiogo Pereira <sir.suriv@gmail.com>
Sat, 5 Sep 2015 19:01:08 +0000 (20:01 +0100)
committerDiogo Pereira <sir.suriv@gmail.com>
Sat, 5 Sep 2015 19:01:08 +0000 (20:01 +0100)
media-libs/libsoundio/Manifest [new file with mode: 0644]
media-libs/libsoundio/files/libsoundio-1.0.0_clang.patch [new file with mode: 0644]
media-libs/libsoundio/files/libsoundio-1.0.0_examples_tests.patch [new file with mode: 0644]
media-libs/libsoundio/files/libsoundio-1.0.0_static-libs.patch [new file with mode: 0644]
media-libs/libsoundio/libsoundio-1.0.0.ebuild [new file with mode: 0644]
media-libs/libsoundio/metadata.xml [new file with mode: 0644]

diff --git a/media-libs/libsoundio/Manifest b/media-libs/libsoundio/Manifest
new file mode 100644 (file)
index 0000000..a0b6df8
--- /dev/null
@@ -0,0 +1 @@
+DIST libsoundio-1.0.0.tar.gz 112139 SHA256 f05d87916266b6b32020c3e13b78ce9f3a758c43c8f8c8bbaf37578d99e1d3e2 SHA512 d0a0eda701d99ef658ee2858dbf4be2ec872d74bc1c9d05ed5484adcc17e774530c150fcd86cd1213a8dceb6373dfd3319a2c97c506ada0cdfe0f02551c0ddd0 WHIRLPOOL 1720e8eb64dc407a17dfbc9ccc8406184e0fa8c5bcc799553e5af181c9faebc0d0ba75fab0c8d9f6332fec6db1711ae9d6afe4be0e970fd5e9b526511b0a8965
diff --git a/media-libs/libsoundio/files/libsoundio-1.0.0_clang.patch b/media-libs/libsoundio/files/libsoundio-1.0.0_clang.patch
new file mode 100644 (file)
index 0000000..9c417c0
--- /dev/null
@@ -0,0 +1,32 @@
+From 85c219067579e299f9faddd2c24836cf96cc245b Mon Sep 17 00:00:00 2001
+From: Andrew Kelley <superjoe30@gmail.com>
+Date: Thu, 3 Sep 2015 14:05:19 -0700
+Subject: [PATCH] build: fix build on linux with clang
+
+closes #8
+---
+ src/alsa.cpp | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/alsa.cpp b/src/alsa.cpp
+index 18ef1de..8e779a6 100644
+--- a/src/alsa.cpp
++++ b/src/alsa.cpp
+@@ -1016,7 +1016,7 @@ static int instream_wait_for_poll(SoundIoInStreamPrivate *is) {
+     }
+ }
+-void outstream_thread_run(void *arg) {
++static void outstream_thread_run(void *arg) {
+     SoundIoOutStreamPrivate *os = (SoundIoOutStreamPrivate *) arg;
+     SoundIoOutStream *outstream = &os->pub;
+     SoundIoOutStreamAlsa *osa = &os->backend_data.alsa;
+@@ -1367,7 +1367,7 @@ static int outstream_start_alsa(SoundIoPrivate *si, SoundIoOutStreamPrivate *os)
+     return 0;
+ }
+-int outstream_begin_write_alsa(SoundIoPrivate *si, SoundIoOutStreamPrivate *os,
++static int outstream_begin_write_alsa(SoundIoPrivate *si, SoundIoOutStreamPrivate *os,
+         struct SoundIoChannelArea **out_areas, int *frame_count)
+ {
+     *out_areas = nullptr;
diff --git a/media-libs/libsoundio/files/libsoundio-1.0.0_examples_tests.patch b/media-libs/libsoundio/files/libsoundio-1.0.0_examples_tests.patch
new file mode 100644 (file)
index 0000000..aa322c1
--- /dev/null
@@ -0,0 +1,182 @@
+From a3dd080fda5a3581de0602b5887cda87dca2a915 Mon Sep 17 00:00:00 2001
+From: hasufell <hasufell@hasufell.de>
+Date: Sat, 5 Sep 2015 14:07:22 +0200
+Subject: [PATCH] Make building examples and tests optional
+
+---
+ CMakeLists.txt | 136 +++++++++++++++++++++++++++++++--------------------------
+ 1 file changed, 74 insertions(+), 62 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index c109af4..7fa8247 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -25,6 +25,8 @@ set(LIBSOUNDIO_VERSION "${LIBSOUNDIO_VERSION_MAJOR}.${LIBSOUNDIO_VERSION_MINOR}.
+ message("Configuring libsoundio version ${LIBSOUNDIO_VERSION}")
+ option(BUILD_STATIC_LIBS "Build static libraries" ON)
++option(BUILD_EXAMPLE_PROGRAMS "Build example programs" ON)
++option(BUILD_TESTS "Build tests" ON)
+ option(ENABLE_JACK "Enable JACK backend" ON)
+ option(ENABLE_PULSEAUDIO "Enable PulseAudio backend" ON)
+ option(ENABLE_ALSA "Enable ALSA backend" ON)
+@@ -254,80 +256,88 @@ install(FILES
+ # Example Programs
+-add_executable(sio_sine example/sio_sine.c)
+-set_target_properties(sio_sine PROPERTIES
+-    LINKER_LANGUAGE C
+-    COMPILE_FLAGS ${EXAMPLE_CFLAGS})
+-target_link_libraries(sio_sine libsoundio_shared)
+-install(TARGETS sio_sine DESTINATION ${CMAKE_INSTALL_BINDIR})
++if(BUILD_EXAMPLE_PROGRAMS)
++    add_executable(sio_sine example/sio_sine.c)
++    set_target_properties(sio_sine PROPERTIES
++        LINKER_LANGUAGE C
++        COMPILE_FLAGS ${EXAMPLE_CFLAGS})
++    target_link_libraries(sio_sine libsoundio_shared)
++    install(TARGETS sio_sine DESTINATION ${CMAKE_INSTALL_BINDIR})
+-add_executable(sio_list_devices example/sio_list_devices.c)
+-set_target_properties(sio_list_devices PROPERTIES
+-    LINKER_LANGUAGE C
+-    COMPILE_FLAGS ${EXAMPLE_CFLAGS})
+-target_link_libraries(sio_list_devices libsoundio_shared)
+-install(TARGETS sio_list_devices DESTINATION ${CMAKE_INSTALL_BINDIR})
++    add_executable(sio_list_devices example/sio_list_devices.c)
++    set_target_properties(sio_list_devices PROPERTIES
++        LINKER_LANGUAGE C
++        COMPILE_FLAGS ${EXAMPLE_CFLAGS})
++    target_link_libraries(sio_list_devices libsoundio_shared)
++    install(TARGETS sio_list_devices DESTINATION ${CMAKE_INSTALL_BINDIR})
+-add_executable(sio_microphone example/sio_microphone.c)
+-set_target_properties(sio_microphone PROPERTIES
+-    LINKER_LANGUAGE C
+-    COMPILE_FLAGS ${EXAMPLE_CFLAGS})
+-target_link_libraries(sio_microphone libsoundio_shared)
+-install(TARGETS sio_microphone DESTINATION ${CMAKE_INSTALL_BINDIR})
++    add_executable(sio_microphone example/sio_microphone.c)
++    set_target_properties(sio_microphone PROPERTIES
++        LINKER_LANGUAGE C
++        COMPILE_FLAGS ${EXAMPLE_CFLAGS})
++    target_link_libraries(sio_microphone libsoundio_shared)
++    install(TARGETS sio_microphone DESTINATION ${CMAKE_INSTALL_BINDIR})
+-add_executable(sio_record example/sio_record.c)
+-set_target_properties(sio_record PROPERTIES
+-    LINKER_LANGUAGE C
+-    COMPILE_FLAGS ${EXAMPLE_CFLAGS})
+-target_link_libraries(sio_record libsoundio_shared)
+-install(TARGETS sio_record DESTINATION ${CMAKE_INSTALL_BINDIR})
++    add_executable(sio_record example/sio_record.c)
++    set_target_properties(sio_record PROPERTIES
++        LINKER_LANGUAGE C
++        COMPILE_FLAGS ${EXAMPLE_CFLAGS})
++    target_link_libraries(sio_record libsoundio_shared)
++    install(TARGETS sio_record DESTINATION ${CMAKE_INSTALL_BINDIR})
++endif()
++if(BUILD_TESTS)
++    include_directories(
++        "${CMAKE_SOURCE_DIR}/test"
++    )
+-add_executable(unit_tests "${CMAKE_SOURCE_DIR}/test/unit_tests.cpp" ${LIBSOUNDIO_SOURCES})
+-target_link_libraries(unit_tests LINK_PUBLIC ${LIBSOUNDIO_LIBS})
+-set_target_properties(unit_tests PROPERTIES
+-    LINKER_LANGUAGE C
+-    COMPILE_FLAGS ${TEST_CFLAGS}
+-    LINK_FLAGS ${TEST_LDFLAGS}
+-)
++    add_executable(unit_tests "${CMAKE_SOURCE_DIR}/test/unit_tests.cpp" ${LIBSOUNDIO_SOURCES})
++    target_link_libraries(unit_tests LINK_PUBLIC ${LIBSOUNDIO_LIBS})
++    set_target_properties(unit_tests PROPERTIES
++        LINKER_LANGUAGE C
++        COMPILE_FLAGS ${TEST_CFLAGS}
++        LINK_FLAGS ${TEST_LDFLAGS}
++    )
+-add_executable(latency "${CMAKE_SOURCE_DIR}/test/latency.cpp" ${LIBSOUNDIO_SOURCES})
+-target_link_libraries(latency LINK_PUBLIC ${LIBSOUNDIO_LIBS})
+-set_target_properties(latency PROPERTIES
+-    LINKER_LANGUAGE C
+-    COMPILE_FLAGS ${LIB_CFLAGS}
+-)
++    add_executable(latency "${CMAKE_SOURCE_DIR}/test/latency.cpp" ${LIBSOUNDIO_SOURCES})
++    target_link_libraries(latency LINK_PUBLIC ${LIBSOUNDIO_LIBS})
++    set_target_properties(latency PROPERTIES
++        LINKER_LANGUAGE C
++        COMPILE_FLAGS ${LIB_CFLAGS}
++    )
+-add_executable(underflow test/underflow.c)
+-set_target_properties(underflow PROPERTIES
+-    LINKER_LANGUAGE C
+-    COMPILE_FLAGS ${EXAMPLE_CFLAGS})
+-target_link_libraries(underflow libsoundio_shared)
++    add_executable(underflow test/underflow.c)
++    set_target_properties(underflow PROPERTIES
++        LINKER_LANGUAGE C
++        COMPILE_FLAGS ${EXAMPLE_CFLAGS})
++    target_link_libraries(underflow libsoundio_shared)
+-add_executable(backend_disconnect_recover test/backend_disconnect_recover.c)
+-set_target_properties(backend_disconnect_recover PROPERTIES
+-    LINKER_LANGUAGE C
+-    COMPILE_FLAGS ${EXAMPLE_CFLAGS})
+-target_link_libraries(backend_disconnect_recover libsoundio_shared)
++    add_executable(backend_disconnect_recover test/backend_disconnect_recover.c)
++    set_target_properties(backend_disconnect_recover PROPERTIES
++        LINKER_LANGUAGE C
++        COMPILE_FLAGS ${EXAMPLE_CFLAGS})
++    target_link_libraries(backend_disconnect_recover libsoundio_shared)
+-add_executable(overflow test/overflow.c)
+-set_target_properties(overflow PROPERTIES
+-    LINKER_LANGUAGE C
+-    COMPILE_FLAGS ${EXAMPLE_CFLAGS})
+-target_link_libraries(overflow libsoundio_shared)
++    add_executable(overflow test/overflow.c)
++    set_target_properties(overflow PROPERTIES
++        LINKER_LANGUAGE C
++        COMPILE_FLAGS ${EXAMPLE_CFLAGS})
++    target_link_libraries(overflow libsoundio_shared)
+-add_custom_target(coverage
+-    DEPENDS unit_tests
+-    WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
+-    COMMAND lcov --directory . --zerocounters --rc lcov_branch_coverage=1
+-    COMMAND ./unit_tests
+-    COMMAND lcov --directory . --capture --output-file coverage.info --rc lcov_branch_coverage=1
+-    COMMAND lcov --remove coverage.info '/usr/*' --output-file coverage.info.cleaned --rc lcov_branch_coverage=1
+-    COMMAND genhtml -o coverage coverage.info.cleaned --rc lcov_branch_coverage=1
+-    COMMAND rm coverage.info coverage.info.cleaned
+-)
++    add_custom_target(coverage
++        DEPENDS unit_tests
++        WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
++        COMMAND lcov --directory . --zerocounters --rc lcov_branch_coverage=1
++        COMMAND ./unit_tests
++        COMMAND lcov --directory . --capture --output-file coverage.info --rc lcov_branch_coverage=1
++        COMMAND lcov --remove coverage.info '/usr/*' --output-file coverage.info.cleaned --rc lcov_branch_coverage=1
++        COMMAND genhtml -o coverage coverage.info.cleaned --rc lcov_branch_coverage=1
++        COMMAND rm coverage.info coverage.info.cleaned
++    )
++endif()
++
+ add_custom_target(doc
+     WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
+@@ -342,6 +352,8 @@ message("\n"
+     "* Install Directory            : ${CMAKE_INSTALL_PREFIX}\n"
+     "* Build Type                   : ${CMAKE_BUILD_TYPE}\n"
+     "* Build static libs            : ${BUILD_STATIC_LIBS}\n"
++    "* Build examples               : ${BUILD_EXAMPLE_PROGRAMS}\n"
++    "* Build tests                  : ${BUILD_TESTS}\n"
+ )
+ message(
diff --git a/media-libs/libsoundio/files/libsoundio-1.0.0_static-libs.patch b/media-libs/libsoundio/files/libsoundio-1.0.0_static-libs.patch
new file mode 100644 (file)
index 0000000..4b0875c
--- /dev/null
@@ -0,0 +1,52 @@
+From 0a20aec2a14dcfbcbc741d2002985073094634d8 Mon Sep 17 00:00:00 2001
+From: Diogo Pereira <sir.suriv@gmail.com>
+Date: Fri, 4 Sep 2015 17:21:54 +0100
+Subject: [PATCH] Make building static libs optional
+
+---
+ CMakeLists.txt | 18 +++++++++++-------
+ 1 file changed, 11 insertions(+), 7 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 0e66834..c109af4 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -24,6 +24,7 @@ set(LIBSOUNDIO_VERSION_PATCH 0)
+ set(LIBSOUNDIO_VERSION "${LIBSOUNDIO_VERSION_MAJOR}.${LIBSOUNDIO_VERSION_MINOR}.${LIBSOUNDIO_VERSION_PATCH}")
+ message("Configuring libsoundio version ${LIBSOUNDIO_VERSION}")
++option(BUILD_STATIC_LIBS "Build static libraries" ON)
+ option(ENABLE_JACK "Enable JACK backend" ON)
+ option(ENABLE_PULSEAUDIO "Enable PulseAudio backend" ON)
+ option(ENABLE_ALSA "Enable ALSA backend" ON)
+@@ -237,13 +238,15 @@ target_link_libraries(libsoundio_shared LINK_PUBLIC ${LIBSOUNDIO_LIBS})
+ install(TARGETS libsoundio_shared DESTINATION ${CMAKE_INSTALL_LIBDIR})
+-add_library(libsoundio_static STATIC ${LIBSOUNDIO_SOURCES})
+-set_target_properties(libsoundio_static PROPERTIES
+-    OUTPUT_NAME soundio
+-    COMPILE_FLAGS ${LIB_CFLAGS}
+-    LINKER_LANGUAGE C
+-)
+-install(TARGETS libsoundio_static DESTINATION ${CMAKE_INSTALL_LIBDIR})
++if(BUILD_STATIC_LIBS)
++    add_library(libsoundio_static STATIC ${LIBSOUNDIO_SOURCES})
++    set_target_properties(libsoundio_static PROPERTIES
++        OUTPUT_NAME soundio
++        COMPILE_FLAGS ${LIB_CFLAGS}
++        LINKER_LANGUAGE C
++    )
++    install(TARGETS libsoundio_static DESTINATION ${CMAKE_INSTALL_LIBDIR})
++endif()
+ install(FILES
+     ${LIBSOUNDIO_HEADERS}
+@@ -338,6 +341,7 @@ message("\n"
+     "--------------------\n"
+     "* Install Directory            : ${CMAKE_INSTALL_PREFIX}\n"
+     "* Build Type                   : ${CMAKE_BUILD_TYPE}\n"
++    "* Build static libs            : ${BUILD_STATIC_LIBS}\n"
+ )
+ message(
diff --git a/media-libs/libsoundio/libsoundio-1.0.0.ebuild b/media-libs/libsoundio/libsoundio-1.0.0.ebuild
new file mode 100644 (file)
index 0000000..e7fc386
--- /dev/null
@@ -0,0 +1,41 @@
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=5
+
+inherit cmake-multilib
+
+DESCRIPTION="C99 library providing cross-platform audio input and output."
+HOMEPAGE="http://libsound.io/"
+SRC_URI="http://libsound.io/release/${P}.tar.gz"
+
+LICENSE="MIT"
+SLOT="0/1"
+KEYWORDS="~amd64"
+IUSE="alsa coreaudio examples pulseaudio static-libs"
+
+DEPEND="alsa? ( media-libs/alsa-lib[${MULTILIB_USEDEP}] )
+       pulseaudio? ( media-sound/pulseaudio[${MULTILIB_USEDEP}] )"
+RDEPEND="${DEPEND}"
+
+# All of these patches have been merged upstream (#8, #16, #20)
+PATCHES=( "${FILESDIR}/${P}_clang.patch"
+       "${FILESDIR}/${P}_static-libs.patch"
+       "${FILESDIR}/${P}_examples_tests.patch" )
+
+# ENABLE_JACK does not support the current version of jack1
+# See https://github.com/andrewrk/libsoundio/issues/11
+multilib_src_configure() {
+       local mycmakeargs=(
+               $(cmake-utils_use_enable alsa ALSA)
+               $(cmake-utils_use_enable coreaudio COREAUDIO)
+               -DENABLE_JACK=OFF
+               $(cmake-utils_use_enable pulseaudio PULSEAUDIO)
+               -DENABLE_WASAPI=OFF
+               $(cmake-utils_use static-libs BUILD_STATIC_LIBS)
+               -DBUILD_EXAMPLE_PROGRAMS=$(multilib_native_usex examples "ON" "OFF")
+               -DBUILD_TESTS=OFF
+       )
+       cmake-utils_src_configure
+}
diff --git a/media-libs/libsoundio/metadata.xml b/media-libs/libsoundio/metadata.xml
new file mode 100644 (file)
index 0000000..c6026bf
--- /dev/null
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+<herd>proxy-maintainers</herd>
+<maintainer>
+       <email>sir.suriv@gmail.com</email>
+       <name>Diogo Pereira</name>
+       <description>Proxy maintainer. Assign bugs to him.</description>
+</maintainer>
+<longdescription lang="en">
+       C99 library providing cross-platform audio input and output. The API is
+       suitable for real-time software such as digital audio workstations as
+       well as consumer software such as music players.
+</longdescription>
+<upstream>
+       <maintainer status="active">
+               <email>superjoe30@gmail.com</email>
+               <name>Andrew Kelley</name>
+       </maintainer>
+       <remote-id type="github">andrewrk/libsoundio</remote-id>
+       <bugs-to>https://github.com/andrewrk/libsoundio/issues</bugs-to>
+       <doc lang="en">http://libsound.io/doc/</doc>
+</upstream>
+</pkgmetadata>