add libsoundio (#285)
* Add libsoundio * Fix libsoundio for Windows * Fix libsoundio * use xmake.lua to port libsoundio * remove patches * port libsoundio Co-authored-by: Jérôme Leclercq <lynix680@gmail.com>pull/287/head
parent
3215fa0737
commit
a8bcd72dcb
1 changed files with 99 additions and 0 deletions
@ -0,0 +1,99 @@ |
||||
package("libsoundio") |
||||
set_homepage("http://libsound.io/") |
||||
set_description("C library for cross-platform real-time audio input and output.") |
||||
set_license("MIT") |
||||
|
||||
set_urls("https://github.com/andrewrk/libsoundio/archive/$(version).tar.gz", |
||||
"https://github.com/andrewrk/libsoundio.git") |
||||
|
||||
add_versions("2.0.0", "67a8fc1c9bef2b3704381bfb3fb3ce99e3952bc4fea2817729a7180fddf4a71e") |
||||
|
||||
add_includedirs("include", "include/soundio") |
||||
|
||||
add_configs("jack", { description = "Enable JACK backend.", default = false, type = "boolean"}) |
||||
add_configs("pulseaudio", { description = "Enable PulseAudio backend.", default = false, type = "boolean"}) |
||||
add_configs("alsa", { description = "Enable Alsa backend.", default = false, type = "boolean"}) |
||||
add_configs("coreaudio", { description = "Enable CoreAudio backend.", default = false, type = "boolean"}) |
||||
add_configs("wasapi", { description = "Enable WASAPI backend.", default = false, type = "boolean"}) |
||||
|
||||
if is_plat("windows", "mingw") then |
||||
add_syslinks("ole32") |
||||
elseif is_plat("linux", "bsd", "macosx") then |
||||
add_syslinks("pthread") |
||||
end |
||||
|
||||
on_load(function (package) |
||||
if package:is_plat("windows", "mingw") and not package:config("shared") then |
||||
package:add("defines", "SOUNDIO_STATIC_LIBRARY") |
||||
elseif package:is_plat("macosx") and package:config("coreaudio") and not package:config("shared") then |
||||
package:add("frameworks", "CoreAudio", "CoreFoundation", "AudioToolbox") |
||||
end |
||||
end) |
||||
|
||||
on_install(function (package) |
||||
io.gsub("src/config.h.in", "#cmakedefine SOUNDIO_HAVE_JACK", "${define SOUNDIO_HAVE_JACK}") |
||||
io.gsub("src/config.h.in", "#cmakedefine SOUNDIO_HAVE_PULSEAUDIO", "${define SOUNDIO_HAVE_PULSEAUDIO}") |
||||
io.gsub("src/config.h.in", "#cmakedefine SOUNDIO_HAVE_ALSA", "${define SOUNDIO_HAVE_ALSA}") |
||||
io.gsub("src/config.h.in", "#cmakedefine SOUNDIO_HAVE_COREAUDIO", "${define SOUNDIO_HAVE_COREAUDIO}") |
||||
io.gsub("src/config.h.in", "#cmakedefine SOUNDIO_HAVE_WASAPI", "${define SOUNDIO_HAVE_WASAPI}") |
||||
io.gsub("src/config.h.in", "@LIBSOUNDIO_VERSION_MAJOR@", "${VERSION_MAJOR}") |
||||
io.gsub("src/config.h.in", "@LIBSOUNDIO_VERSION_MINOR@", "${VERSION_MINOR}") |
||||
io.gsub("src/config.h.in", "@LIBSOUNDIO_VERSION_PATCH@", "${VERSION_ALTER}") |
||||
io.gsub("src/config.h.in", "@LIBSOUNDIO_VERSION@", package:version_str()) |
||||
io.writefile("xmake.lua", ([[ |
||||
set_version("%s") |
||||
add_rules("mode.debug", "mode.release") |
||||
for _, name in ipairs({"jack", "pulseaudio", "alsa", "coreaudio", "wasapi"}) do |
||||
option(name) |
||||
set_default(false) |
||||
set_showmenu(true) |
||||
set_configvar("SOUNDIO_HAVE_" .. name:upper(), 1) |
||||
if name == "coreaudio" then |
||||
add_frameworks("CoreAudio", "CoreFoundation", "AudioToolbox") |
||||
else |
||||
-- TODO for other backend or use add_requires |
||||
end |
||||
option_end() |
||||
end |
||||
target("soundio") |
||||
set_kind("$(kind)") |
||||
add_files("src/*.c|alsa.c|jack.c|wasapi.c|pulseaudio.c|coreaudio.c") |
||||
add_includedirs(".", "soundio") |
||||
set_configdir("soundio") |
||||
add_configfiles("src/config.h.in") |
||||
add_headerfiles("(soundio/*.h)") |
||||
if is_plat("windows") then |
||||
add_cflags("/TP") -- fix missing stdatomic.h |
||||
end |
||||
for _, name in ipairs({"jack", "pulseaudio", "alsa", "coreaudio", "wasapi"}) do |
||||
if has_config(name) then |
||||
add_files("src/" .. name .. ".c") |
||||
add_options(name) |
||||
end |
||||
end |
||||
if is_kind("shared") then |
||||
if is_plat("windows", "mingw") then |
||||
add_syslinks("ole32") |
||||
elseif is_plat("linux", "bsd", "macosx") then |
||||
add_syslinks("pthread") |
||||
end |
||||
end |
||||
]]):format(package:version_str())) |
||||
local configs = {} |
||||
if package:config("shared") then |
||||
configs.kind = "shared" |
||||
elseif not package:is_plat("windows", "mingw") and package:config("pic") ~= false then |
||||
configs.cxflags = "-fPIC" |
||||
end |
||||
-- TODO we only support coreaudio backend now |
||||
for _, name in ipairs({"jack", "pulseaudio", "alsa", "coreaudio", "wasapi"}) do |
||||
if package:config(name) then |
||||
configs[name] = true |
||||
end |
||||
end |
||||
import("package.tools.xmake").install(package, configs) |
||||
end) |
||||
|
||||
on_test(function (package) |
||||
assert(package:has_cfuncs("soundio_create", {includes = "soundio/soundio.h"})) |
||||
end) |
Loading…
Reference in new issue