build_defines.lua 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. import("core.base.hashset")
  2. local available_backends = hashset.from{"aaudio", "audio4", "alsa", "coreaudio", "dsound", "jack", "null", "opensl", "oss", "pulseaudio", "wasapi", "webaudio", "winmm"}
  3. function main(package)
  4. local defines = {}
  5. if not package:config("headeronly") and package:config("shared") then
  6. table.insert(defines, "MA_DLL")
  7. end
  8. local enabled_backends = package:config("enabled_backends")
  9. if #enabled_backends > 0 then
  10. table.insert(defines, "MA_ENABLE_ONLY_SPECIFIC_BACKENDS")
  11. for _, backend in ipairs(enabled_backends) do
  12. if not available_backends:has(backend) then
  13. os.raise("unknown backend " .. backend)
  14. end
  15. table.insert(defines, "MA_ENABLE_" .. backend:upper())
  16. end
  17. end
  18. local disabled_backends = package:config("disabled_backends")
  19. for _, backend in ipairs(disabled_backends) do
  20. for _, backend in ipairs(enabled_backends) do
  21. if not available_backends:has(backend) then
  22. os.raise("unknown backend " .. backend)
  23. end
  24. table.insert(defines, "MA_NO_" .. backend:upper())
  25. end
  26. end
  27. if not package:config("avx2") then
  28. table.insert(defines, "MA_NO_AVX2")
  29. end
  30. if not package:config("decoding") then
  31. table.insert(defines, "MA_NO_DECODING")
  32. end
  33. if not package:config("device_io") then
  34. table.insert(defines, "MA_NO_DEVICE_IO")
  35. end
  36. if not package:config("encoding") then
  37. table.insert(defines, "MA_NO_ENCODING")
  38. end
  39. if not package:config("engine") then
  40. table.insert(defines, "MA_NO_ENGINE")
  41. end
  42. if not package:config("flac") then
  43. table.insert(defines, "MA_NO_FLAC")
  44. end
  45. if not package:config("generation") then
  46. table.insert(defines, "MA_NO_GENERATION")
  47. end
  48. if not package:config("mp3") then
  49. table.insert(defines, "MA_NO_MP3")
  50. end
  51. if not package:config("neon") then
  52. table.insert(defines, "MA_NO_NEON")
  53. end
  54. if not package:config("node_graph") then
  55. table.insert(defines, "MA_NO_NODE_GRAPH")
  56. end
  57. if not package:config("resource_manager") then
  58. table.insert(defines, "MA_NO_RESOURCE_MANAGER")
  59. end
  60. if not package:config("sse2") then
  61. table.insert(defines, "MA_NO_SSE2")
  62. end
  63. if not package:config("threading") then
  64. table.insert(defines, "MA_NO_THREADING")
  65. end
  66. if not package:config("wav") then
  67. table.insert(defines, "MA_NO_WAV")
  68. end
  69. return table.unique(defines)
  70. end