package An official xmake package repository
https://xrepo.xmake.io/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
122 lines
4.8 KiB
122 lines
4.8 KiB
1 year ago
|
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)
|