123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121 |
- 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", {private = true})
- 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)
|