xmake.lua 4.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. package("imgui")
  2. set_homepage("https://github.com/ocornut/imgui")
  3. set_description("Bloat-free Immediate Mode Graphical User interface for C++ with minimal dependencies")
  4. set_license("MIT")
  5. add_urls("https://github.com/ocornut/imgui/archive/$(version).tar.gz",
  6. "https://github.com/ocornut/imgui.git")
  7. add_versions("v1.88", "9f14c788aee15b777051e48f868c5d4d959bd679fc5050e3d2a29de80d8fd32e")
  8. add_versions("v1.87-docking", "1ee252772ae9c0a971d06257bb5c89f628fa696a")
  9. add_versions("v1.87", "b54ceb35bda38766e36b87c25edf7a1cd8fd2cb8c485b245aedca6fb85645a20")
  10. add_versions("v1.86", "6ba6ae8425a19bc52c5e067702c48b70e4403cd339cba02073a462730a63e825")
  11. add_versions("v1.85-docking", "dc8c3618e8f8e2dada23daa1aa237626af341fd8")
  12. add_versions("v1.85", "7ed49d1f4573004fa725a70642aaddd3e06bb57fcfe1c1a49ac6574a3e895a77")
  13. add_versions("v1.84.2", "35cb5ca0fb42cb77604d4f908553f6ef3346ceec4fcd0189675bdfb764f62b9b")
  14. add_versions("v1.84.1", "292ab54cfc328c80d63a3315a242a4785d7c1cf7689fbb3d70da39b34db071ea")
  15. add_versions("v1.83-docking", "80b5fb51edba2fd3dea76ec3e88153e2492243d1")
  16. add_versions("v1.83", "ccf3e54b8d1fa30dd35682fc4f50f5d2fe340b8e29e08de71287d0452d8cc3ff")
  17. add_versions("v1.82", "fefa2804bd55f3d25b134af08c0e1f86d4d059ac94cef3ee7bd21e2f194e5ce5")
  18. add_versions("v1.81", "f7c619e03a06c0f25e8f47262dbc32d61fd033d2c91796812bf0f8c94fca78fb")
  19. add_versions("v1.80", "d7e4e1c7233409018437a646680316040e6977b9a635c02da93d172baad94ce9")
  20. add_versions("v1.79", "f1908501f6dc6db8a4d572c29259847f6f882684b10488d3a8d2da31744cd0a4")
  21. add_versions("v1.75", "1023227fae4cf9c8032f56afcaea8902e9bfaad6d9094d6e48fb8f3903c7b866")
  22. add_configs("user_config", {description = "Use user config (disables test!)", default = nil, type = "string"})
  23. add_configs("glfw_opengl3", {description = "Use glfw+opengl3 as backend", default = false, type = "boolean"})
  24. add_configs("wchar32", {description = "Use 32-bit for ImWchar (default is 16-bit)", default = false, type = "boolean"})
  25. add_configs("freetype", {description = "Use FreeType to build and rasterize the font atlas", default = false, type = "boolean"})
  26. add_includedirs("include", "include/imgui", "include/backends")
  27. if is_plat("windows", "mingw") then
  28. add_syslinks("imm32")
  29. end
  30. on_load("macosx", "linux", "windows", "mingw", "android", "iphoneos", function (package)
  31. if package:config("freetype") then
  32. package:add("deps", "freetype")
  33. end
  34. if package:config("glfw_opengl3") then
  35. if package:version():lt("1.84") then
  36. package:add("deps", "glad")
  37. package:add("defines", "IMGUI_IMPL_OPENGL_LOADER_GLAD")
  38. end
  39. package:add("deps", "glfw")
  40. end
  41. if package:version_str():find("-docking", 1, true) then
  42. package:set("urls", {"https://github.com/ocornut/imgui.git"})
  43. end
  44. end)
  45. on_install("macosx", "linux", "windows", "mingw", "android", "iphoneos", function (package)
  46. local configs = {
  47. wchar32 = package:config("wchar32"),
  48. freetype = package:config("freetype"),
  49. glfw_opengl3 = package:config("glfw_opengl3"),
  50. user_config = package:config("user_config"),
  51. use_glad = package:version():lt("1.84") -- this flag will be used if glfw_opengl3 is enabled
  52. }
  53. os.cp(path.join(package:scriptdir(), "port", "xmake.lua"), "xmake.lua")
  54. import("package.tools.xmake").install(package, configs)
  55. end)
  56. on_test(function (package)
  57. local user_config = package:config("user_config")
  58. assert(user_config ~= nil or package:check_cxxsnippets({test = [[
  59. void test() {
  60. IMGUI_CHECKVERSION();
  61. ImGui::CreateContext();
  62. ImGuiIO& io = ImGui::GetIO();
  63. ImGui::NewFrame();
  64. ImGui::Text("Hello, world!");
  65. ImGui::ShowDemoWindow(NULL);
  66. ImGui::Render();
  67. ImGui::DestroyContext();
  68. }
  69. ]]}, {configs = {languages = "c++11"}, includes = {"imgui.h"}}))
  70. end)