package An official xmake package repository
https://xrepo.xmake.io/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
73 lines
2.5 KiB
73 lines
2.5 KiB
import("core.base.hashset") |
|
|
|
local available_backends = hashset.from{"aaudio", "audio4", "alsa", "coreaudio", "dsound", "jack", "null", "opensl", "oss", "pulseaudio", "wasapi", "webaudio", "winmm"} |
|
|
|
function main(package) |
|
local defines = {} |
|
if not package:config("headeronly") and package:config("shared") then |
|
table.insert(defines, "MA_DLL") |
|
end |
|
|
|
local enabled_backends = package:config("enabled_backends") |
|
if #enabled_backends > 0 then |
|
table.insert(defines, "MA_ENABLE_ONLY_SPECIFIC_BACKENDS") |
|
for _, backend in ipairs(enabled_backends) do |
|
if not available_backends:has(backend) then |
|
os.raise("unknown backend " .. backend) |
|
end |
|
table.insert(defines, "MA_ENABLE_" .. backend:upper()) |
|
end |
|
end |
|
local disabled_backends = package:config("disabled_backends") |
|
for _, backend in ipairs(disabled_backends) do |
|
for _, backend in ipairs(enabled_backends) do |
|
if not available_backends:has(backend) then |
|
os.raise("unknown backend " .. backend) |
|
end |
|
table.insert(defines, "MA_NO_" .. backend:upper()) |
|
end |
|
end |
|
if not package:config("avx2") then |
|
table.insert(defines, "MA_NO_AVX2") |
|
end |
|
if not package:config("decoding") then |
|
table.insert(defines, "MA_NO_DECODING") |
|
end |
|
if not package:config("device_io") then |
|
table.insert(defines, "MA_NO_DEVICE_IO") |
|
end |
|
if not package:config("encoding") then |
|
table.insert(defines, "MA_NO_ENCODING") |
|
end |
|
if not package:config("engine") then |
|
table.insert(defines, "MA_NO_ENGINE") |
|
end |
|
if not package:config("flac") then |
|
table.insert(defines, "MA_NO_FLAC") |
|
end |
|
if not package:config("generation") then |
|
table.insert(defines, "MA_NO_GENERATION") |
|
end |
|
if not package:config("mp3") then |
|
table.insert(defines, "MA_NO_MP3") |
|
end |
|
if not package:config("neon") then |
|
table.insert(defines, "MA_NO_NEON") |
|
end |
|
if not package:config("node_graph") then |
|
table.insert(defines, "MA_NO_NODE_GRAPH") |
|
end |
|
if not package:config("resource_manager") then |
|
table.insert(defines, "MA_NO_RESOURCE_MANAGER") |
|
end |
|
if not package:config("sse2") then |
|
table.insert(defines, "MA_NO_SSE2") |
|
end |
|
if not package:config("threading") then |
|
table.insert(defines, "MA_NO_THREADING") |
|
end |
|
if not package:config("wav") then |
|
table.insert(defines, "MA_NO_WAV") |
|
end |
|
return table.unique(defines) |
|
end
|
|
|