aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTsukasa Sugiura <t.sugiura0204@gmail.com>2019-09-24 04:27:07 +0900
committerVictor Romero <romerosanchezv@gmail.com>2019-09-23 12:27:07 -0700
commit889fa61c29a0ed8566074d6462a825f1263a60b3 (patch)
tree133e77a5222b6b9931488de6b5d2371768ce3006
parent804d8ea43ca8df96dbf976aa0c953d4458fdd03f (diff)
downloadvcpkg-889fa61c29a0ed8566074d6462a825f1263a60b3.tar.gz
vcpkg-889fa61c29a0ed8566074d6462a825f1263a60b3.zip
[libsoundio] Add libsoundio port (#8273)
* [libsoundio] Add libsoundio port * [libsoundio] Add description and homepage * [libsoundio] WindowsStore not supported * [libsoundio] Fix libsoundio-config.cmake * [libsoundio] Fix CMakeLists for Linux
-rw-r--r--ports/libsoundio/CONTROL4
-rw-r--r--ports/libsoundio/fix_cmakelists.patch184
-rw-r--r--ports/libsoundio/fix_example.patch36
-rw-r--r--ports/libsoundio/fix_test.patch82
-rw-r--r--ports/libsoundio/portfile.cmake41
5 files changed, 347 insertions, 0 deletions
diff --git a/ports/libsoundio/CONTROL b/ports/libsoundio/CONTROL
new file mode 100644
index 000000000..9b2072115
--- /dev/null
+++ b/ports/libsoundio/CONTROL
@@ -0,0 +1,4 @@
+Source: libsoundio
+Version: 2.0.0
+Description: libsoundio is C library providing cross-platform audio input and output.
+Homepage: http://libsound.io/
diff --git a/ports/libsoundio/fix_cmakelists.patch b/ports/libsoundio/fix_cmakelists.patch
new file mode 100644
index 000000000..225c4cff3
--- /dev/null
+++ b/ports/libsoundio/fix_cmakelists.patch
@@ -0,0 +1,184 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 6541f1b..058bf3b 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -1,6 +1,4 @@
+ cmake_minimum_required(VERSION 2.8.5)
+-project(libsoundio C)
+-set(CMAKE_MODULE_PATH ${libsoundio_SOURCE_DIR}/cmake ${CMAKE_MODULE_PATH})
+
+ if(CMAKE_VERSION VERSION_LESS 3.0.0)
+ set(CMAKE_INSTALL_LIBDIR "lib" CACHE PATH "library install dir (lib)")
+@@ -11,6 +9,11 @@ else()
+ cmake_policy(SET CMP0046 NEW)
+ include(GNUInstallDirs)
+ endif()
++cmake_policy(SET CMP0022 NEW)
++
++project(libsoundio C)
++set(CMAKE_MODULE_PATH ${libsoundio_SOURCE_DIR}/cmake ${CMAKE_MODULE_PATH})
++set(CMAKE_INCLUDE_CURRENT_DIR_IN_INTERFACE ON)
+
+ if(NOT CMAKE_BUILD_TYPE)
+ set(CMAKE_BUILD_TYPE "Debug" CACHE STRING
+@@ -27,8 +30,7 @@ if(NOT SOUNDIO_STATIC_LIBNAME)
+ set(SOUNDIO_STATIC_LIBNAME soundio)
+ endif()
+
+-option(BUILD_STATIC_LIBS "Build static libraries" ON)
+-option(BUILD_DYNAMIC_LIBS "Build dynamic libraries" ON)
++option(BUILD_SHARED_LIBS "Build dynamic libraries" ON)
+ option(BUILD_EXAMPLE_PROGRAMS "Build example programs" ON)
+ option(BUILD_TESTS "Build tests" ON)
+ option(ENABLE_JACK "Enable JACK backend" ON)
+@@ -203,7 +205,7 @@ if(MSVC)
+ set(EXAMPLE_CFLAGS "/W4")
+ set(TEST_CFLAGS "${LIB_CFLAGS}")
+ set(TEST_LDFLAGS " ")
+- set(LIBM " ")
++ set(LIBM "")
+ else()
+ set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -Werror -pedantic")
+ set(LIB_CFLAGS "-std=c11 -fvisibility=hidden -Wall -Werror=strict-prototypes -Werror=old-style-definition -Werror=missing-prototypes -D_REENTRANT -D_POSIX_C_SOURCE=200809L -Wno-missing-braces")
+@@ -223,32 +225,33 @@ configure_file(
+ ${DOXYGEN_CONF_FILE}
+ )
+
+-if(BUILD_DYNAMIC_LIBS)
+- add_library(libsoundio_shared SHARED ${LIBSOUNDIO_SOURCES})
+- set_target_properties(libsoundio_shared PROPERTIES
++if(BUILD_SHARED_LIBS)
++ add_library(libsoundio SHARED ${LIBSOUNDIO_SOURCES})
++ set_target_properties(libsoundio PROPERTIES PUBLIC_HEADER "${LIBSOUNDIO_HEADERS}")
++ set_target_properties(libsoundio PROPERTIES
+ OUTPUT_NAME soundio
+ SOVERSION ${LIBSOUNDIO_VERSION_MAJOR}
+ VERSION ${LIBSOUNDIO_VERSION}
+ COMPILE_FLAGS ${LIB_CFLAGS}
+ LINKER_LANGUAGE C
+ )
+- target_link_libraries(libsoundio_shared LINK_PUBLIC ${LIBSOUNDIO_LIBS})
+- install(TARGETS libsoundio_shared DESTINATION ${CMAKE_INSTALL_LIBDIR})
+-endif()
+-
+-if(BUILD_STATIC_LIBS)
+- add_library(libsoundio_static STATIC ${LIBSOUNDIO_SOURCES})
+- set_target_properties(libsoundio_static PROPERTIES
+- OUTPUT_NAME ${SOUNDIO_STATIC_LIBNAME}
++ target_link_libraries(libsoundio LINK_PUBLIC ${LIBSOUNDIO_LIBS})
++ install(TARGETS libsoundio EXPORT libsoundio-export LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
++else()
++ add_library(libsoundio STATIC ${LIBSOUNDIO_SOURCES})
++ set_target_properties(libsoundio PROPERTIES PUBLIC_HEADER "${LIBSOUNDIO_HEADERS}")
++ set_target_properties(libsoundio PROPERTIES
++ OUTPUT_NAME soundio
+ COMPILE_FLAGS ${LIB_CFLAGS}
+ LINKER_LANGUAGE C
+ )
+- install(TARGETS libsoundio_static DESTINATION ${CMAKE_INSTALL_LIBDIR})
++ target_link_libraries(libsoundio LINK_PUBLIC ${LIBSOUNDIO_LIBS})
++ target_compile_definitions(libsoundio PUBLIC SOUNDIO_STATIC_LIBRARY)
++ install(TARGETS libsoundio EXPORT libsoundio-export LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
+ endif()
+
+-install(FILES
+- ${LIBSOUNDIO_HEADERS}
+- DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/soundio")
++add_library(libsoundio::libsoundio ALIAS libsoundio)
++install(EXPORT libsoundio-export FILE libsoundio-config.cmake DESTINATION share/libsoundio/ NAMESPACE ${PROJECT_NAME}:: EXPORT_LINK_INTERFACE_LIBRARIES)
+
+ # Example Programs
+
+@@ -257,44 +260,28 @@ if(BUILD_EXAMPLE_PROGRAMS)
+ set_target_properties(sio_sine PROPERTIES
+ LINKER_LANGUAGE C
+ COMPILE_FLAGS ${EXAMPLE_CFLAGS})
+- if(BUILD_DYNAMIC_LIBS)
+- target_link_libraries(sio_sine libsoundio_shared ${LIBM})
+- else()
+- target_link_libraries(sio_sine libsoundio_static ${LIBSOUNDIO_LIBS} ${LIBM})
+- endif()
++ target_link_libraries(sio_sine libsoundio::libsoundio ${LIBM})
+ 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})
+- if(BUILD_DYNAMIC_LIBS)
+- target_link_libraries(sio_list_devices libsoundio_shared)
+- else()
+- target_link_libraries(sio_list_devices libsoundio_static ${LIBSOUNDIO_LIBS})
+- endif()
++ target_link_libraries(sio_list_devices libsoundio::libsoundio)
+ 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})
+- if(BUILD_DYNAMIC_LIBS)
+- target_link_libraries(sio_microphone libsoundio_shared)
+- else()
+- target_link_libraries(sio_microphone libsoundio_static ${LIBSOUNDIO_LIBS})
+- endif()
++ target_link_libraries(sio_microphone libsoundio::libsoundio)
+ 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})
+- if(BUILD_DYNAMIC_LIBS)
+- target_link_libraries(sio_record libsoundio_shared)
+- else()
+- target_link_libraries(sio_record libsoundio_static ${LIBSOUNDIO_LIBS})
+- endif()
++ target_link_libraries(sio_record libsoundio::libsoundio)
+ install(TARGETS sio_record DESTINATION ${CMAKE_INSTALL_BINDIR})
+ endif()
+
+@@ -308,7 +295,7 @@ if(BUILD_TESTS)
+ )
+
+ add_executable(latency "${libsoundio_SOURCE_DIR}/test/latency.c" ${LIBSOUNDIO_SOURCES})
+- target_link_libraries(latency LINK_PUBLIC ${LIBSOUNDIO_LIBS} ${LIBM})
++ target_link_libraries(latency LINK_PUBLIC libsoundio::libsoundio ${LIBM})
+ set_target_properties(latency PROPERTIES
+ LINKER_LANGUAGE C
+ COMPILE_FLAGS ${LIB_CFLAGS}
+@@ -318,31 +305,19 @@ if(BUILD_TESTS)
+ set_target_properties(underflow PROPERTIES
+ LINKER_LANGUAGE C
+ COMPILE_FLAGS ${EXAMPLE_CFLAGS})
+- if(BUILD_DYNAMIC_LIBS)
+- target_link_libraries(underflow libsoundio_shared ${LIBM})
+- else()
+- target_link_libraries(underflow libsoundio_static ${LIBSOUNDIO_LIBS} ${LIBM})
+- endif()
++ target_link_libraries(underflow libsoundio::libsoundio ${LIBM})
+
+ add_executable(backend_disconnect_recover test/backend_disconnect_recover.c)
+ set_target_properties(backend_disconnect_recover PROPERTIES
+ LINKER_LANGUAGE C
+ COMPILE_FLAGS ${EXAMPLE_CFLAGS})
+- if(BUILD_DYNAMIC_LIBS)
+- target_link_libraries(backend_disconnect_recover libsoundio_shared)
+- else()
+- target_link_libraries(backend_disconnect_recover libsoundio_static ${LIBSOUNDIO_LIBS})
+- endif()
++ target_link_libraries(backend_disconnect_recover libsoundio::libsoundio)
+
+ add_executable(overflow test/overflow.c)
+ set_target_properties(overflow PROPERTIES
+ LINKER_LANGUAGE C
+ COMPILE_FLAGS ${EXAMPLE_CFLAGS})
+- if(BUILD_DYNAMIC_LIBS)
+- target_link_libraries(overflow libsoundio_shared)
+- else()
+- target_link_libraries(overflow libsoundio_static ${LIBSOUNDIO_LIBS})
+- endif()
++ target_link_libraries(overflow libsoundio::libsoundio)
+
+
+
diff --git a/ports/libsoundio/fix_example.patch b/ports/libsoundio/fix_example.patch
new file mode 100644
index 000000000..39bbb9b02
--- /dev/null
+++ b/ports/libsoundio/fix_example.patch
@@ -0,0 +1,36 @@
+diff --git a/sio_microphone.c b/sio_microphone.c
+index 0fa8cca..5c89656 100644
+--- a/sio_microphone.c
++++ b/sio_microphone.c
+@@ -45,10 +45,13 @@ static int prioritized_sample_rates[] = {
+ 0,
+ };
+
+-
++#ifdef _MSC_VER
++__declspec (noreturn)
++#else
+ __attribute__ ((cold))
+ __attribute__ ((noreturn))
+ __attribute__ ((format (printf, 1, 2)))
++#endif
+ static void panic(const char *format, ...) {
+ va_list ap;
+ va_start(ap, format);
+diff --git a/sio_record.c b/sio_record.c
+index 61d584d..c33b05e 100644
+--- a/sio_record.c
++++ b/sio_record.c
+@@ -12,7 +12,12 @@
+ #include <string.h>
+ #include <math.h>
+ #include <errno.h>
++#ifdef _WIN32
++#include <windows.h>
++#define sleep(n) Sleep(n * 1000)
++#else
+ #include <unistd.h>
++#endif
+
+ struct RecordContext {
+ struct SoundIoRingBuffer *ring_buffer;
diff --git a/ports/libsoundio/fix_test.patch b/ports/libsoundio/fix_test.patch
new file mode 100644
index 000000000..dc92c2d1b
--- /dev/null
+++ b/ports/libsoundio/fix_test.patch
@@ -0,0 +1,82 @@
+diff --git a/backend_disconnect_recover.c b/backend_disconnect_recover.c
+index 046a150..7c89df7 100644
+--- a/backend_disconnect_recover.c
++++ b/backend_disconnect_recover.c
+@@ -12,11 +12,20 @@
+ #include <stdlib.h>
+ #include <string.h>
+ #include <math.h>
++#ifdef _WIN32
++#include <windows.h>
++#define sleep(n) Sleep(n * 1000)
++#else
+ #include <unistd.h>
++#endif
+
++#ifdef _MSC_VER
++__declspec (noreturn)
++#else
+ __attribute__ ((cold))
+ __attribute__ ((noreturn))
+ __attribute__ ((format (printf, 1, 2)))
++#endif
+ static void panic(const char *format, ...) {
+ va_list ap;
+ va_start(ap, format);
+diff --git a/overflow.c b/overflow.c
+index 43b6d22..67947fe 100644
+--- a/overflow.c
++++ b/overflow.c
+@@ -12,7 +12,12 @@
+ #include <stdlib.h>
+ #include <string.h>
+ #include <math.h>
++#ifdef _WIN32
++#include <windows.h>
++#define sleep(n) Sleep(n * 1000)
++#else
+ #include <unistd.h>
++#endif
+
+ static enum SoundIoFormat prioritized_formats[] = {
+ SoundIoFormatFloat32NE,
+@@ -36,9 +41,13 @@ static enum SoundIoFormat prioritized_formats[] = {
+ SoundIoFormatInvalid,
+ };
+
++#ifdef _MSC_VER
++__declspec (noreturn)
++#else
+ __attribute__ ((cold))
+ __attribute__ ((noreturn))
+ __attribute__ ((format (printf, 1, 2)))
++#endif
+ static void panic(const char *format, ...) {
+ va_list ap;
+ va_start(ap, format);
+diff --git a/underflow.c b/underflow.c
+index 083e92d..32907de 100644
+--- a/underflow.c
++++ b/underflow.c
+@@ -12,12 +12,21 @@
+ #include <stdlib.h>
+ #include <string.h>
+ #include <math.h>
++#ifdef _WIN32
++#include <windows.h>
++#define sleep(n) Sleep(n * 1000)
++#else
+ #include <unistd.h>
++#endif
+ #include <stdint.h>
+
++#ifdef _MSC_VER
++__declspec (noreturn)
++#else
+ __attribute__ ((cold))
+ __attribute__ ((noreturn))
+ __attribute__ ((format (printf, 1, 2)))
++#endif
+ static void panic(const char *format, ...) {
+ va_list ap;
+ va_start(ap, format);
diff --git a/ports/libsoundio/portfile.cmake b/ports/libsoundio/portfile.cmake
new file mode 100644
index 000000000..c298e0ab8
--- /dev/null
+++ b/ports/libsoundio/portfile.cmake
@@ -0,0 +1,41 @@
+include(vcpkg_common_functions)
+
+if(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "WindowsStore")
+ message(FATAL_ERROR "WindowsStore not supported")
+endif()
+
+vcpkg_from_github(
+ OUT_SOURCE_PATH SOURCE_PATH
+ REPO andrewrk/libsoundio
+ REF 2.0.0
+ SHA512 347a9be1789a41e778ea8d0efa1d00e03e725a4ab65e3aaf6c71e49138643f08a50a81bd60087d86a3b4d63beaeec617e47ba6b81f829ece8a3ac17418eb5309
+ HEAD_REF master
+ PATCHES
+ fix_cmakelists.patch
+ fix_example.patch
+ fix_test.patch
+)
+
+string(COMPARE EQUAL "${VCPKG_LIBRARY_LINKAGE}" "dynamic" BUILD_SHARED_LIBS)
+
+vcpkg_configure_cmake(
+ SOURCE_PATH ${SOURCE_PATH}
+ PREFER_NINJA
+ OPTIONS
+ -DBUILD_SHARED_LIBS=${BUILD_SHARED_LIBS}
+ -DBUILD_EXAMPLE_PROGRAMS=OFF
+ -DBUILD_TESTS=OFF
+)
+
+vcpkg_install_cmake()
+vcpkg_fixup_cmake_targets()
+vcpkg_copy_pdbs()
+
+if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug")
+ file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include)
+ file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/share)
+endif()
+
+file(INSTALL ${SOURCE_PATH}/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/libsoundio RENAME copyright)
+
+vcpkg_test_cmake(PACKAGE_NAME libsoundio)