63 lines
2.1 KiB
Lua
63 lines
2.1 KiB
Lua
import("core.project.depend")
|
|
function cmd_compile(genfile, sourcefile, template, macro, define)
|
|
import("find_sdk")
|
|
local meta = find_sdk.find_my_program("refl")
|
|
template = template or path.join(meta.sdkdir, "template")
|
|
if not macro then --优先使用库定义
|
|
macro = path.join(os.projectdir(), "engine/3rdparty/zlib/include/refl/macro.h")
|
|
if not os.exists(macro) then
|
|
macro = path.join(os.curdir(), "macro.h")
|
|
end
|
|
end
|
|
argv = {"build", sourcefile, "-o", genfile, "-t", template, "-m", macro}
|
|
if define then
|
|
table.insert(argv, "-d")
|
|
table.insert(argv, define)
|
|
end
|
|
print("cmd_meta_compile", genfile)
|
|
os.runv(meta.program, argv)
|
|
return argv
|
|
end
|
|
|
|
function _listen_gen_vs_file(target, batch)
|
|
-- genfile, sourcefile = batch[1], batch[2]
|
|
-- local dependfile = target:dependfile(genfile)
|
|
-- depend.on_changed(
|
|
-- function()
|
|
-- cmd_compile(batch[1], batch[2], template, macro, define)
|
|
-- end,
|
|
-- {dependfile = dependfile, files = sourcefile}
|
|
-- )
|
|
end
|
|
function compile(target)
|
|
local glsl_batch = target:data("glsl.batch")
|
|
if not glsl_batch then
|
|
return
|
|
end
|
|
for _, batch in ipairs(glsl_batch.vs) do
|
|
local dir = path.directory(batch)
|
|
local vs = path.filename(batch)
|
|
local vert = string.gsub(vs, ".vs.glsl$", ".vert.spv")
|
|
_listen_gen_vs_file(target, dir, vert)
|
|
end
|
|
end
|
|
function main(target)
|
|
local ps = {}
|
|
local psfiles = target:extraconf("rules", "glsl.env", "ps")
|
|
for _, file in ipairs(psfiles) do
|
|
local p = path.join(target:scriptdir(), file)
|
|
for __, filepath in ipairs(os.files(p)) do
|
|
table.insert(ps, filepath)
|
|
end
|
|
end
|
|
local vsfiles = target:extraconf("rules", "glsl.env", "vs")
|
|
for _, file in ipairs(vsfiles) do
|
|
local p = path.join(target:scriptdir(), file)
|
|
for __, filepath in ipairs(os.files(p)) do
|
|
table.insert(vs, filepath)
|
|
end
|
|
end
|
|
local glslfiles = {ps = ps, vs = vs}
|
|
target:data_set("glsl.batch", glslfiles)
|
|
end
|