xmake.lua 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. package("libtcod")
  2. set_homepage("https://github.com/libtcod/libtcod")
  3. set_description("A collection of tools and algorithms for developing traditional roguelikes. Such as field-of-view, pathfinding, and a tile-based terminal emulator.")
  4. set_license("BSD-3-Clause")
  5. add_urls("https://github.com/libtcod/libtcod/archive/refs/tags/$(version).tar.gz",
  6. "https://github.com/libtcod/libtcod.git", {submodules = false})
  7. add_versions("2.1.1", "ee9cc60140f480f72cb2321d5aa50beeaa829b0a4a651e8a37e2ba938ea23caa")
  8. add_patches("2.1.1", "patches/2.1.1/debundle.diff", "1e0697f13d179164eac0293db4917425b90ddc0f5275388f59f020ebeeb0aed0")
  9. if is_plat("wasm") then
  10. add_configs("shared", {description = "Build shared library.", default = false, type = "boolean", readonly = true})
  11. end
  12. add_deps("cmake")
  13. if is_subhost("windows") then
  14. add_deps("pkgconf")
  15. else
  16. add_deps("pkg-config")
  17. end
  18. add_deps("libsdl3", "zlib", "lodepng", "utf8proc", "stb")
  19. if is_plat("linux", "bsd") then
  20. add_syslinks("pthread")
  21. end
  22. on_load(function (package)
  23. if not package:config("shared") then
  24. package:add("defines", "LIBTCOD_STATIC")
  25. end
  26. end)
  27. on_install(function (package)
  28. os.rm("src/vendor/**|stb.c")
  29. local configs = {
  30. "-DCMAKE_TOOLCHAIN_FILE=OFF",
  31. "-DLIBTCOD_SDL3=find_package",
  32. "-DLIBTCOD_ZLIB=find_package",
  33. "-DLIBTCOD_LODEPNG=find_package",
  34. "-DLIBTCOD_UTF8PROC=find_package",
  35. "-DLIBTCOD_STB=find_package"
  36. }
  37. table.insert(configs, "-DCMAKE_BUILD_TYPE=" .. (package:is_debug() and "Debug" or "Release"))
  38. table.insert(configs, "-DBUILD_SHARED_LIBS=" .. (package:config("shared") and "ON" or "OFF"))
  39. import("package.tools.cmake").install(package, configs)
  40. end)
  41. on_test(function (package)
  42. assert(package:check_cxxsnippets({test = [[
  43. #include <libtcod.hpp>
  44. void test() {
  45. tcod::Context g_context;
  46. auto sdl_window = g_context.get_sdl_window();
  47. }
  48. ]]}, {configs = {languages = "c++17"}}))
  49. end)