xmake.lua 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. package("concerto-core")
  2. set_homepage("https://github.com/ConcertoEngine/ConcertoCore")
  3. set_description("Concerto engine core library")
  4. set_license("MIT")
  5. add_urls("https://github.com/ConcertoEngine/ConcertoCore.git")
  6. add_versions("2025.10.03", "b088dfbed40faa514c592fb258f087aee32cc77f")
  7. add_configs("asserts", {description = "Enable asserts.", default = false, type = "boolean"})
  8. add_configs("enet", {description = "Enable ENet support.", default = false, type = "boolean"})
  9. on_check("macosx", function (package)
  10. assert(macos.version():ge("14"), "concerto-core requires version >= 14 for macOS")
  11. end)
  12. on_check("android", function (package)
  13. local ndk = package:toolchain("ndk"):config("ndkver")
  14. assert(ndk and tonumber(ndk) >= 27, "concerto-core require ndk version >= 27")
  15. end)
  16. on_load(function (package)
  17. if package:config("enet") then
  18. package:add("deps", "enet")
  19. end
  20. if package:config("asserts") then
  21. package:add("defines", "CCT_ENABLE_ASSERTS")
  22. end
  23. end)
  24. on_install(function (package)
  25. if package:has_tool("cxx", "cl", "clang_cl") then
  26. package:add("cxxflags", "/Zc:preprocessor")
  27. end
  28. if not package:config("shared") then
  29. package:add("defines", "CCT_CORE_LIB_STATIC")
  30. end
  31. local configs = {}
  32. configs.tests = false
  33. configs.mode = package:is_debug() and "debug" or "release"
  34. configs.override_runtime = false
  35. configs.asserts = package:config("asserts")
  36. configs.enet = package:config("enet")
  37. import("package.tools.xmake").install(package, configs)
  38. end)
  39. on_test(function (package)
  40. assert(package:check_cxxsnippets({test = [[
  41. #include <string>
  42. #include <Concerto/Core/Types/Types.hpp>
  43. #include <Concerto/Core/Result/Result.hpp>
  44. #include <Concerto/Core/DynLib/DynLib.hpp>
  45. void test() {
  46. cct::Result<cct::Int32, std::string> result(28);
  47. cct::DynLib lib;
  48. bool ok = lib.IsLoaded();
  49. }
  50. ]]}, {configs = {languages = "c++20"}}))
  51. end)