Skip to content

Commit

Permalink
media-libs/libsoundio: new ebuild
Browse files Browse the repository at this point in the history
  • Loading branch information
diogocp committed Sep 5, 2015
1 parent fe18698 commit f7dd999
Show file tree
Hide file tree
Showing 6 changed files with 332 additions and 0 deletions.
1 change: 1 addition & 0 deletions media-libs/libsoundio/Manifest
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
DIST libsoundio-1.0.0.tar.gz 112139 SHA256 f05d87916266b6b32020c3e13b78ce9f3a758c43c8f8c8bbaf37578d99e1d3e2 SHA512 d0a0eda701d99ef658ee2858dbf4be2ec872d74bc1c9d05ed5484adcc17e774530c150fcd86cd1213a8dceb6373dfd3319a2c97c506ada0cdfe0f02551c0ddd0 WHIRLPOOL 1720e8eb64dc407a17dfbc9ccc8406184e0fa8c5bcc799553e5af181c9faebc0d0ba75fab0c8d9f6332fec6db1711ae9d6afe4be0e970fd5e9b526511b0a8965
32 changes: 32 additions & 0 deletions media-libs/libsoundio/files/libsoundio-1.0.0_clang.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
From 85c219067579e299f9faddd2c24836cf96cc245b Mon Sep 17 00:00:00 2001
From: Andrew Kelley <[email protected]>
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;
182 changes: 182 additions & 0 deletions media-libs/libsoundio/files/libsoundio-1.0.0_examples_tests.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,182 @@
From a3dd080fda5a3581de0602b5887cda87dca2a915 Mon Sep 17 00:00:00 2001
From: hasufell <[email protected]>
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(
52 changes: 52 additions & 0 deletions media-libs/libsoundio/files/libsoundio-1.0.0_static-libs.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
From 0a20aec2a14dcfbcbc741d2002985073094634d8 Mon Sep 17 00:00:00 2001
From: Diogo Pereira <[email protected]>
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(
41 changes: 41 additions & 0 deletions media-libs/libsoundio/libsoundio-1.0.0.ebuild
Original file line number Diff line number Diff line change
@@ -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
}
24 changes: 24 additions & 0 deletions media-libs/libsoundio/metadata.xml
Original file line number Diff line number Diff line change
@@ -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>[email protected]</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>[email protected]</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>

0 comments on commit f7dd999

Please sign in to comment.