diff options
| author | ruki <[email protected]> | 2015-05-19 15:35:49 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2015-05-19 15:35:49 +0800 |
| commit | 75bdd1517bc093774855c23a286e97113896f5f0 (patch) | |
| tree | 4dd3eded914ea143c39fb05480babc5b603123da /xmake/scripts/base/makefile.lua | |
| parent | f9214c5e20b64d662af20b83da5889e6675dea95 (diff) | |
make object deps for makefile
Diffstat (limited to 'xmake/scripts/base/makefile.lua')
| -rw-r--r-- | xmake/scripts/base/makefile.lua | 75 |
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 |
