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.
121 lines
4.8 KiB
121 lines
4.8 KiB
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)
|
|
|