|
@@ -0,0 +1,121 @@
|
|
|
+package("cimgui")
|
|
|
+ set_homepage("https://github.com/cimgui/cimgui")
|
|
|
+ set_description("c-api for imgui (https://github.com/ocornut/imgui) Look at: https://github.com/cimgui for other widgets")
|
|
|
+ set_license("MIT")
|
|
|
+
|
|
|
+ add_urls("https://github.com/cimgui/cimgui.git")
|
|
|
+ add_versions("2023.08.02", "a21e28e74027796d983f8c8d4a639a4e304251f2")
|
|
|
+
|
|
|
+ add_configs("imgui", {description = "imgui version", default = "v1.89", type = "string"})
|
|
|
+ add_configs("target", {description = "options as words in one string: internal for imgui_internal generation, freetype for freetype generation, comments for comments generation, nochar to skip char* function version, noimstrv to skip imstrv", default = "internal noimstrv", type = "string"})
|
|
|
+
|
|
|
+ add_configs("glfw", {description = "Enable the glfw backend", default = false, type = "boolean"})
|
|
|
+ add_configs("opengl2", {description = "Enable the opengl2 backend", default = false, type = "boolean"})
|
|
|
+ add_configs("opengl3", {description = "Enable the opengl3 backend", default = false, type = "boolean"})
|
|
|
+ add_configs("sdl2", {description = "Enable the sdl2 backend", default = false, type = "boolean"})
|
|
|
+ add_configs("vulkan", {description = "Enable the vulkan backend", default = false, type = "boolean"})
|
|
|
+ add_configs("freetype", {description = "Use FreeType to build and rasterize the font atlas", default = false, type = "boolean"})
|
|
|
+ add_configs("wchar32", {description = "Use 32-bit for ImWchar (default is 16-bit)", default = false, type = "boolean"})
|
|
|
+
|
|
|
+ if is_plat("windows") then
|
|
|
+ add_syslinks("imm32")
|
|
|
+ end
|
|
|
+
|
|
|
+ add_defines("IMGUI_DISABLE_OBSOLETE_FUNCTIONS=1")
|
|
|
+
|
|
|
+ add_deps("luajit")
|
|
|
+
|
|
|
+ on_load(function (package)
|
|
|
+ if package:config("sdl2") then
|
|
|
+ package:add("deps", "libsdl")
|
|
|
+ package:add("defines", "CIMGUI_USE_SDL2")
|
|
|
+ end
|
|
|
+ if package:config("opengl2") then
|
|
|
+ package:add("defines", "CIMGUI_USE_OPENGL2")
|
|
|
+ end
|
|
|
+ if package:config("opengl3") then
|
|
|
+ package:add("defines", "CIMGUI_USE_OPENGL3")
|
|
|
+ end
|
|
|
+ if package:config("glfw") then
|
|
|
+ package:add("deps", "glfw")
|
|
|
+ package:add("defines", "CIMGUI_USE_GLFW")
|
|
|
+ end
|
|
|
+ if package:config("vulkan") then
|
|
|
+ package:add("deps", "vulkansdk")
|
|
|
+ end
|
|
|
+ if package:config("freetype") then
|
|
|
+ package:add("deps", "freetype")
|
|
|
+ package:add("defines", "CIMGUI_FREETYPE=1")
|
|
|
+ end
|
|
|
+ end)
|
|
|
+
|
|
|
+ on_install("windows|x64", "windows|x86", "linux", "macosx", function (package)
|
|
|
+ os.vrun("git -c core.fsmonitor=false submodule foreach --recursive git checkout " .. package:config("imgui"))
|
|
|
+
|
|
|
+ local envs = {}
|
|
|
+ local args = {"generator.lua"}
|
|
|
+
|
|
|
+ if package:is_plat("windows") then
|
|
|
+ import("package.tools.msbuild")
|
|
|
+
|
|
|
+ table.insert(args, "cl")
|
|
|
+ table.join2(envs, msbuild.buildenvs(package))
|
|
|
+ else
|
|
|
+ if package:has_tool("cc", "gcc", "gxx") then
|
|
|
+ table.insert(args, "gcc")
|
|
|
+ elseif package:has_tool("cc", "clang", "clangxx") then
|
|
|
+ table.insert(args, "clang")
|
|
|
+ else
|
|
|
+ raise("Compiler not found")
|
|
|
+ end
|
|
|
+ end
|
|
|
+
|
|
|
+ table.insert(args, package:config("target"))
|
|
|
+
|
|
|
+ table.join2(args, table.wrap(package:config("cflags")))
|
|
|
+ table.join2(args, table.wrap(package:config("cxflags")))
|
|
|
+ for _, define in ipairs(table.wrap(package:config("defines"))) do
|
|
|
+ table.insert(args, "-D" .. define)
|
|
|
+ end
|
|
|
+
|
|
|
+ local configs = {
|
|
|
+ glfw = package:config("glfw"),
|
|
|
+ opengl2 = package:config("opengl2"),
|
|
|
+ opengl3 = package:config("opengl3"),
|
|
|
+ sdl2 = package:config("sdl2"),
|
|
|
+ vulkan = package:config("vulkan"),
|
|
|
+ freetype = package:config("freetype"),
|
|
|
+ wchar32 = package:config("wchar32")
|
|
|
+ }
|
|
|
+
|
|
|
+ if configs.sdl2 then
|
|
|
+ table.insert(args, "sdl")
|
|
|
+ end
|
|
|
+ if configs.glfw then
|
|
|
+ table.insert(args, "glfw")
|
|
|
+ end
|
|
|
+ if configs.vulkan then
|
|
|
+ table.insert(args, "vulkan")
|
|
|
+ end
|
|
|
+ if configs.opengl2 then
|
|
|
+ table.insert(args, "opengl2")
|
|
|
+ end
|
|
|
+ if configs.opengl3 then
|
|
|
+ table.insert(args, "opengl3")
|
|
|
+ end
|
|
|
+
|
|
|
+ os.vrunv("luajit", args, {envs = envs, curdir = "generator"})
|
|
|
+
|
|
|
+ os.cp(path.join(package:scriptdir(), "port", "xmake.lua"), "xmake.lua")
|
|
|
+ import("package.tools.xmake").install(package, configs)
|
|
|
+ end)
|
|
|
+
|
|
|
+ on_test(function (package)
|
|
|
+ assert(package:check_csnippets({test = [[
|
|
|
+ #define CIMGUI_DEFINE_ENUMS_AND_STRUCTS
|
|
|
+ #include <cimgui.h>
|
|
|
+ void test() {
|
|
|
+ igCreateContext(NULL);
|
|
|
+ }
|
|
|
+ ]]}, {configs = {languages = "c99"}}))
|
|
|
+ end)
|