xmake.lua 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. package("pulseaudio")
  2. set_homepage("https://www.freedesktop.org/wiki/Software/PulseAudio/")
  3. set_description("A featureful, general-purpose sound server")
  4. set_license("LGPL-2.1-or-later")
  5. add_urls("https://github.com/pulseaudio/pulseaudio/archive/refs/tags/$(version).tar.gz",
  6. "https://github.com/pulseaudio/pulseaudio.git")
  7. add_versions("v17.0", "ed36c8a0cdff7b57382a258d3e1a916f42500fbafd64dd3c2e258ed8f017ee90")
  8. add_configs("shared", {description = "Build shared library.", default = true, type = "boolean", readonly = true})
  9. add_extsources("pkgconfig::libpulse")
  10. if is_plat("linux") then
  11. add_extsources("pacman::libpulse", "apt::libpulse-dev")
  12. end
  13. if is_plat("linux", "bsd") then
  14. add_syslinks("pthread")
  15. end
  16. add_deps("meson", "ninja")
  17. if is_plat("linux") then
  18. add_deps("alsa-lib")
  19. end
  20. add_deps("dbus", "fftw", "glib", "jack2", "libatomic_ops", "libiconv", "libsndfile", "openssl3", "soxr", "speex")
  21. on_install("linux", function (package)
  22. -- FFTW dependency has broken CMakeConfig
  23. io.replace("meson.build",
  24. "fftw_dep = dependency('fftw3f', required : get_option('fftw'))",
  25. "fftw_dep = dependency('fftw3', method: 'pkg-config', required : get_option('fftw'))", {plain = true})
  26. -- SndFile dependency has 4 FindDep.cmake files
  27. io.replace("meson.build",
  28. "sndfile_dep = dependency('sndfile', version : '>= 1.0.20')",
  29. "sndfile_dep = dependency('SndFile', method: 'cmake')", {plain = true})
  30. if package:version_str() then
  31. local v = package:version_str():gsub("v", "")
  32. io.writefile(".tarball-version", v)
  33. os.rm("git-version-gen")
  34. io.replace("meson.build",
  35. "run_command(find_program('git-version-gen'), join_paths(meson.current_source_dir(), '.tarball-version'), check : false).stdout().strip()",
  36. "'" .. v .. "'", {plain = true})
  37. end
  38. local configs = {
  39. "-Dgstreamer=disabled",
  40. "-Ddaemon=false",
  41. "-Dclient=true",
  42. "-Ddoxygen=false",
  43. "-Dgcov=false",
  44. "-Dman=false",
  45. "-Dtests=false",
  46. "-Dbashcompletiondir=no",
  47. "-Dzshcompletiondir=no",
  48. "-Dasyncns=disabled",
  49. "-Davahi=disabled",
  50. "-Dbluez5=disabled",
  51. "-Dconsolekit=disabled",
  52. "-Ddbus=enabled",
  53. "-Delogind=disabled",
  54. "-Dfftw=enabled",
  55. "-Dglib=enabled",
  56. "-Dgsettings=disabled",
  57. "-Dgtk=disabled",
  58. "-Dhal-compat=false",
  59. "-Dipv6=true",
  60. "-Djack=enabled",
  61. "-Dlirc=enabled",
  62. "-Dopenssl=enabled",
  63. "-Dorc=disabled",
  64. "-Dsoxr=enabled",
  65. "-Dspeex=enabled",
  66. "-Dsystemd=disabled",
  67. "-Dtcpwrap=disabled",
  68. "-Dudev=disabled",
  69. "-Dvalgrind=disabled",
  70. "-Dx11=disabled",
  71. "-Dadrian-aec=false",
  72. "-Dwebrtc-aec=disabled"
  73. }
  74. table.insert(configs, "-Dalsa=" .. (package:is_plat("linux") and "enabled" or "disabled"))
  75. table.insert(configs, "-Doss-output=" .. (package:is_plat("linux") and "enabled" or "disabled"))
  76. table.insert(configs, "-Ddefault_library=" .. (package:config("shared") and "shared" or "static"))
  77. import("package.tools.meson").install(package, configs, {packagedeps = {"libiconv", "libflac", "libopus", "libvorbis", "libogg"}})
  78. end)
  79. on_test(function (package)
  80. assert(package:has_cfuncs("pa_simple_new", {includes = "pulse/simple.h"}))
  81. end)