diff options
| author | ruki <[email protected]> | 2015-12-03 15:24:24 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2015-12-03 15:24:24 +0800 |
| commit | 7624723775b58c1811287465e6d7c27cede81b31 (patch) | |
| tree | e094f7e5bb50f58e1ac70cf00bda6319c244ab52 /xmake/scripts/base/makefile.lua | |
| parent | 35755c5252d631c539ba5893843904148173dea9 (diff) | |
normalize lib*.a/*.lib filename
Diffstat (limited to 'xmake/scripts/base/makefile.lua')
| -rw-r--r-- | xmake/scripts/base/makefile.lua | 43 |
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 |
