summaryrefslogtreecommitdiffstatshomepage
path: root/3rdparty/genie/src/base/premake.lua
diff options
context:
space:
mode:
Diffstat (limited to '3rdparty/genie/src/base/premake.lua')
-rw-r--r--3rdparty/genie/src/base/premake.lua20
1 files changed, 12 insertions, 8 deletions
diff --git a/3rdparty/genie/src/base/premake.lua b/3rdparty/genie/src/base/premake.lua
index 8d64d9663c1..a4051427935 100644
--- a/3rdparty/genie/src/base/premake.lua
+++ b/3rdparty/genie/src/base/premake.lua
@@ -22,13 +22,18 @@
--
function premake.generate(obj, filename, callback)
+ local prev = io.capture()
+ local abort = (callback(obj) == false)
+ local new = io.endcapture(prev)
+
+ if abort then
+ premake.stats.num_skipped = premake.stats.num_skipped + 1
+ return
+ end
+
filename = premake.project.getfilename(obj, filename)
if (premake._checkgenerate) then
- io.capture()
- callback(obj)
- local new = io.endcapture()
-
local delta = false
local f, err = io.open(filename, "rb")
@@ -47,7 +52,7 @@
end
if delta then
- printf("Generating %s...", filename)
+ printf("Generating %q", filename)
local f, err = io.open(filename, "wb")
if (not f) then
error(err, 0)
@@ -62,15 +67,14 @@
premake.stats.num_skipped = premake.stats.num_skipped + 1
end
else
- printf("Generating %s...", filename)
+ printf("Generating %q", filename)
local f, err = io.open(filename, "wb")
if (not f) then
error(err, 0)
end
- io.output(f)
- callback(obj)
+ f:write(new)
f:close()
premake.stats.num_generated = premake.stats.num_generated + 1
end