123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- -- Compile corrade resource files. Substitution for cmake corrade_add_resource.
- --
- -- Usage:
- --
- -- add_rules("@corrade/resource")
- -- add_files("resources.conf", {rule = "@corrade/resource", single = false})
- rule("resource")
- set_extensions(".conf")
- on_buildcmd_file(function (target, batchcmds, sourcefile, opt)
- import("core.base.option")
- import("lib.detect.find_program")
- batchcmds:show_progress(opt.progress, "${color.build.object}compiling.corrade %s", sourcefile)
- -- get corrade-rc program
- local corrade = find_program("corrade-rc", {check = "-h"})
- assert(corrade, "corrade-rc not found! please check your corrade installation.")
- -- generate source file
- local basename = path.basename(sourcefile)
- local sourcefile_cx = path.join(target:autogendir(), "rules", "autogen", basename .. ".cpp")
- local objectfile = target:objectfile(sourcefile_cx)
- table.insert(target:objectfiles(), objectfile)
- -- compile
- batchcmds:mkdir(path.directory(sourcefile_cx))
- local args = {}
- local fileconf = target:fileconfig(sourcefile)
- if fileconf and fileconf.single then
- table.insert(args, "--single")
- end
- if fileconf and fileconf.name then
- table.insert(args, fileconf.name)
- else
- table.insert(args, basename)
- end
- local workdir = path.directory(sourcefile)
- table.insert(args, path.filename(sourcefile))
- table.insert(args, path.relative(sourcefile_cx, workdir))
- if option.get("verbose") then
- batchcmds:show(corrade .. " " .. os.args(args))
- end
- local currentdir = os.curdir()
- batchcmds:cd(workdir)
- batchcmds:vrunv(corrade, args)
- batchcmds:cd(currentdir)
- batchcmds:compile(sourcefile_cx, objectfile)
- -- add dependency
- batchcmds:add_depfiles(sourcefile)
- batchcmds:set_depmtime(os.mtime(objectfile))
- batchcmds:set_depcache(target:dependfile(objectfile))
- end)
|