2
0

xmake.lua 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. package("caudio")
  2. set_homepage("https://github.com/R4stl1n/cAudio")
  3. set_description("3D Audio Engine Based on Openal")
  4. add_urls("https://github.com/R4stl1n/cAudio/archive/refs/tags/$(version).zip",
  5. "https://github.com/R4stl1n/cAudio.git")
  6. add_versions("2.3.1", "10f36cd7e1583405ade9001c3782fdf04be09f0f74e56cba23fac3a2b3ed5ae5")
  7. add_patches("2.3.1", path.join(os.scriptdir(), "patches", "2.3.1", "win32_fix.patch"), "92d09b63479e203e59cece12fb5d539ab73f6654228ad44b221361db50639acf")
  8. add_deps("openal-soft")
  9. add_links("cAudio", "Vorbis", "Ogg")
  10. on_install("windows", "linux", function (package)
  11. local dep_dir = (package:is_arch("x64", "x86_64") and "Dependencies64" or "Dependencies")
  12. local configs = {
  13. "-DCMAKE_BUILD_TYPE=" .. (package:debug() and "Debug" or "Release"),
  14. "-DCAUDIO_STATIC=" .. (package:config("shared") and "OFF" or "ON"),
  15. "-DCAUDIO_DEPENDENCIES_DIR=" .. dep_dir,
  16. "-DCAUDIO_BUILD_SAMPLES=OFF"
  17. }
  18. local cxflags
  19. local shflags
  20. if package:is_plat("windows") then
  21. io.replace("cAudio/Headers/cOpenALUtil.h", "#if !defined(CAUDIO_PLATFORM_LINUX)", "#if 0", {plain = true})
  22. if not package:dep("openal-soft"):config("shared") then
  23. cxflags = "-DAL_LIBTYPE_STATIC"
  24. end
  25. shflags = "winmm.lib"
  26. end
  27. import("package.tools.cmake").install(package, configs, {buildir = "CMake",
  28. cxflags = cxflags, shflags = shflags})
  29. os.cp("cAudio/include/*.h", package:installdir("include"))
  30. os.cp("cAudio/Headers/*.h", package:installdir("include"))
  31. os.cp(path.join(dep_dir, "include/*"), package:installdir("include"))
  32. os.cp("CMake/include/*.h", package:installdir("include"))
  33. os.trycp("CMake/lib/**.lib", package:installdir("lib"))
  34. end)
  35. on_test(function (package)
  36. assert(package:check_cxxsnippets({test = [[
  37. void test(int argc, char* argv[]) {
  38. cAudio::IAudioManager* audioMgr = cAudio::createAudioManager(false);
  39. if(audioMgr)
  40. {
  41. cAudio::IAudioDeviceList* pDeviceList = cAudio::createAudioDeviceList();
  42. unsigned int deviceCount = pDeviceList->getDeviceCount();
  43. cAudio::cAudioString defaultDeviceName = pDeviceList->getDefaultDeviceName();
  44. for(unsigned int i=0; i<deviceCount; ++i)
  45. {
  46. cAudio::cAudioString deviceName = pDeviceList->getDeviceName(i);
  47. if(deviceName.compare(defaultDeviceName) == 0);
  48. }
  49. unsigned int deviceSelection = 0;
  50. audioMgr->initialize(pDeviceList->getDeviceName(deviceSelection).c_str());
  51. CAUDIO_DELETE pDeviceList;
  52. pDeviceList = 0;
  53. cAudio::IAudioSource* mysound = audioMgr->create("song", "../Media/cAudioTheme1.ogg",true);
  54. for (size_t i=0; i<10; i++)
  55. {
  56. audioMgr->play2D("../Media/bling.ogg");
  57. }
  58. if(mysound)
  59. {
  60. mysound->setVolume(0.5);
  61. mysound->play2d(false);
  62. while(mysound->isPlaying())
  63. cAudio::cAudioSleep(10);
  64. }
  65. cAudio::destroyAudioManager(audioMgr);
  66. }
  67. }
  68. ]]}, {configs = {languages = "cxx11"}, includes = "cAudio.h"}))
  69. end)