summaryrefslogtreecommitdiff
path: root/xmake/scripts/base/makefile.lua
diff options
context:
space:
mode:
authorruki <[email protected]>2015-05-19 15:35:49 +0800
committerruki <[email protected]>2015-05-19 15:35:49 +0800
commit75bdd1517bc093774855c23a286e97113896f5f0 (patch)
tree4dd3eded914ea143c39fb05480babc5b603123da /xmake/scripts/base/makefile.lua
parentf9214c5e20b64d662af20b83da5889e6675dea95 (diff)
make object deps for makefile
Diffstat (limited to 'xmake/scripts/base/makefile.lua')
-rw-r--r--xmake/scripts/base/makefile.lua75
1 files changed, 72 insertions, 3 deletions
diff --git a/xmake/scripts/base/makefile.lua b/xmake/scripts/base/makefile.lua
index 80ef7aa45..a54f74199 100644
--- a/xmake/scripts/base/makefile.lua
+++ b/xmake/scripts/base/makefile.lua
@@ -26,11 +26,77 @@ local makefile = makefile or {}
-- load modules
local io = require("base/io")
local os = require("base/os")
+local path = require("base/path")
local utils = require("base/utils")
local config = require("base/config")
local project = require("base/project")
local platform = require("platform/platform")
+-- get the source files from the given target
+function makefile._srcfiles(target)
+
+ -- check
+ assert(target)
+
+ -- no files?
+ if not target.files then
+ return nil
+ end
+
+ -- wrap files first
+ local target_files = utils.wrap(target.files)
+
+ -- match files
+ local i = 1
+ local srcfiles = {}
+ for _, target_file in ipairs(target_files) do
+
+ -- match source files
+ local files = os.match(target_file)
+
+ -- process source files
+ for _, file in ipairs(files) do
+
+ -- save it
+ srcfiles[i] = file
+ i = i + 1
+
+ end
+ end
+
+ -- ok?
+ return srcfiles
+end
+
+-- get object files for the given source files
+function makefile._objfiles(srcfiles)
+
+ -- check
+ assert(srcfiles)
+
+ -- the platform configs
+ local configs = platform._CONFIGS
+ assert(configs and configs.format)
+
+ -- the object file format
+ local format = configs.format.object
+ assert(format)
+
+ -- make object files
+ local i = 1
+ local objfiles = {}
+ for _, srcfile in ipairs(srcfiles) do
+
+ -- save it
+ objfiles[i] = path.directory(srcfile) .. "/" .. format[1] .. path.basename(srcfile) .. format[2]
+ i = i + 1
+
+ end
+
+ -- ok?
+ return objfiles
+end
+
-- make the given target to the makefile
function makefile._make_target(file, name, target)
@@ -49,9 +115,12 @@ function makefile._make_target(file, name, target)
end
-- make dependence for object
- local srcfiles = os.match(target.files)
- for _, srcfile in ipairs(srcfiles) do
- file:write(" " .. srcfile)
+ local srcfiles = makefile._srcfiles(target)
+ if srcfiles then
+ local objfiles = makefile._objfiles(srcfiles)
+ for _, objfile in ipairs(objfiles) do
+ file:write(" " .. path.translate(objfile))
+ end
end
-- make dependence end