summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2016-03-22 09:46:16 +0800
committerruki <[email protected]>2016-03-22 09:46:16 +0800
commit399d87fadad1e965c1fbb11db74c0c249abfaf9f (patch)
treeb28728afdf4cd246247fb7c57fe86d7b615a49ce
parentd1f010fc5582cdaabb2ed758b2aaf7ffa5a95a43 (diff)
make makefile
-rwxr-xr-xxmake/actions/config/makefile.lua61
1 files changed, 56 insertions, 5 deletions
diff --git a/xmake/actions/config/makefile.lua b/xmake/actions/config/makefile.lua
index 62cd4084f..3b199de63 100755
--- a/xmake/actions/config/makefile.lua
+++ b/xmake/actions/config/makefile.lua
@@ -31,13 +31,64 @@ function _logfile()
return vformat("$(buildir)/.build.log")
end
+-- make the object for the *.[o|obj] source file
+function _make_object_for_object(makefile, target, srcfile, objfile)
+
+ -- make command
+ local cmd = format("xmake l cp %s %s", srcfile, objfile)
+
+ -- make head
+ makefile:printf("%s:", objfile)
+
+ -- make dependence
+ makefile:print(" %s", srcfile)
+
+ -- make body
+ makefile:print("\t@echo inserting.$(mode) %s", srcfile)
+ makefile:write(format("\t@xmake l $(VERBOSE) verbose \"%s\"\n", cmd:encode()))
+ makefile:print("\t@%s", cmd)
+
+ -- make tail
+ makefile:print("")
+
+end
+
+-- make the object for the *.[a|lib] source file
+function _make_object_for_static(makefile, target, srcfile, objfile)
+
+ -- make command
+ local cmd = format("xmake l -P %s -f %s dispatcher ex extract %s %s > %s 2>&1", xmake._PROJECT_DIR, xmake._PROJECT_FILE, srcmakefile:encode(), objmakefile:encode(), makefile._LOGFILE)
+
+ -- make head
+ makefile:printf("%s:", objfile)
+
+ -- make dependence
+ makefile:print(" %s", srcfile)
+
+ -- make body
+ makefile:print("\t@echo inserting.$(mode) %s", srcfile)
+ makefile:write(format("\t@xmake l $(VERBOSE) verbose \"%s\"\n", cmd:encode()))
+ makefile:print("\t@xmake l rmdir %s\n", path.directory(objfile))
+ makefile:print("\t@%s", cmd)
+
+ -- make tail
+ makefile:print("")
+
+end
+
-- make the object
function _make_object(makefile, target, srcfile, objfile)
- -- make object for the *.o/obj source makefile
---[[ if _make_object_for_object(makefile, target, srcfile, objfile) then return
- elseif _make_object_for_static(makefile, target, srcfile, objfile) then return
- end]]
+ -- get the source file type
+ local filetype = path.extension(srcfile):lower()
+
+ -- make the object for the *.o/obj source makefile
+ if filetype == ".o" or filetype ~= ".obj" then
+ return _make_object_for_object(makefile, target, srcfile, objfile)
+ -- make the object for the *.[a|lib] source file
+ elseif filetype == ".a" or filetype ~= ".lib" then
+ return _make_object_for_static(makefile, target, srcfile, objfile)
+ end
-- make command
local ccache = tool.shellname("ccache")
@@ -85,7 +136,7 @@ function _make_target(makefile, target)
-- make head
local targetfile = target:targetfile()
- makefile:printf("%s: %s\n", name, targetfile)
+ makefile:print("%s: %s", target:name(), targetfile)
makefile:printf("%s:", targetfile)
-- make dependence for the dependent targets