summaryrefslogtreecommitdiff
path: root/xmake/scripts/base/makefile.lua
diff options
context:
space:
mode:
authorruki <[email protected]>2015-12-03 15:24:24 +0800
committerruki <[email protected]>2015-12-03 15:24:24 +0800
commit7624723775b58c1811287465e6d7c27cede81b31 (patch)
treee094f7e5bb50f58e1ac70cf00bda6319c244ab52 /xmake/scripts/base/makefile.lua
parent35755c5252d631c539ba5893843904148173dea9 (diff)
normalize lib*.a/*.lib filename
Diffstat (limited to 'xmake/scripts/base/makefile.lua')
-rw-r--r--xmake/scripts/base/makefile.lua43
1 files changed, 43 insertions, 0 deletions
diff --git a/xmake/scripts/base/makefile.lua b/xmake/scripts/base/makefile.lua
index bc9a3f297..a7c7a7301 100644
--- a/xmake/scripts/base/makefile.lua
+++ b/xmake/scripts/base/makefile.lua
@@ -77,6 +77,47 @@ function makefile._make_object_for_object(file, target, srcfile, objfile)
return true
end
+-- make object for the *.a/lib source file
+function makefile._make_object_for_static(file, target, srcfile, objfile)
+
+ -- get the source file type
+ local filetype = path.extension(srcfile)
+ if not filetype then return false end
+
+ -- get the lower file type
+ filetype = filetype:lower()
+
+ -- not static file?
+ if filetype ~= ".a" and filetype ~= ".lib" then return false end
+
+ -- get mode
+ local mode = config.get("mode") or ""
+ if mode == "release" then mode = ".r"
+ elseif mode == "debug" then mode = ".d"
+ elseif mode == "profile" then mode = ".p"
+ else mode = "" end
+
+ -- make command
+ local cmd = string.format("xmake l cp %s %s", srcfile, objfile)
+
+ -- make head
+ file:write(string.format("%s:", objfile))
+
+ -- make dependence
+ file:write(string.format(" %s\n", srcfile))
+
+ -- make body
+ file:write(string.format("\t@echo adding%s %s\n", mode, srcfile))
+ file:write(string.format("\t@xmake l $(VERBOSE) verbose \"%s\"\n", cmd:gsub("[%s=\"]", function (w) return string.format("%%%x", w:byte()) end)))
+ file:write(string.format("\t@%s\n", cmd))
+
+ -- make tail
+ file:write("\n")
+
+ -- ok
+ return true
+end
+
-- make the object to the makefile
function makefile._make_object(file, target, srcfile, objfile)
@@ -86,6 +127,8 @@ function makefile._make_object(file, target, srcfile, objfile)
-- make object for the *.o/obj source file
if makefile._make_object_for_object(file, target, srcfile, objfile) then
return true
+ elseif makefile._make_object_for_static(file, target, srcfile, objfile) then
+ return true
end
-- get the compiler