diff options
| author | ruki <[email protected]> | 2015-06-16 21:01:44 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2015-06-16 21:01:44 +0800 |
| commit | 3d97768287a089f862d841cb697b48852941b002 (patch) | |
| tree | 2b71ddfd936e2d7117d057eee08c6c44a603f190 /xmake/scripts | |
| parent | d549aaedf96e6d6eb77e9d588dc0a0269cd1ae71 (diff) | |
modify makefile rule and enable make -j4
Diffstat (limited to 'xmake/scripts')
| -rw-r--r-- | xmake/scripts/base/makefile.lua | 24 | ||||
| -rw-r--r-- | xmake/scripts/base/project.lua | 19 | ||||
| -rw-r--r-- | xmake/scripts/tools/make.lua | 4 |
3 files changed, 42 insertions, 5 deletions
diff --git a/xmake/scripts/base/makefile.lua b/xmake/scripts/base/makefile.lua index 6a6511b54..7b1ca2e7d 100644 --- a/xmake/scripts/base/makefile.lua +++ b/xmake/scripts/base/makefile.lua @@ -126,18 +126,38 @@ function makefile._make_target(file, name, target) local targetfile = rule.targetfile(name, target) assert(targetfile) + -- get the targets + local targets = project.targets() + assert(targets) + -- get the linker from the given kind local l = linker.get(target.kind) if not l then return false end -- make head - file:write(string.format("%s:", name)) + file:write(string.format("%s: %s\n", name, targetfile)) + file:write(string.format("%s:", targetfile)) -- make dependence for the dependent targets if target.deps then + + -- get all dependent target local deps = utils.wrap(target.deps) for _, dep in ipairs(deps) do - file:write(" " .. dep) + + -- the dependent target + local deptarget = targets[dep] + if not deptarget then + utils.error("the dependent target: %s is invalid!", dep) + return false + end + + -- get the dependent target file + local depfile = rule.targetfile(dep, deptarget) + assert(depfile) + + -- add dependence + file:write(" " .. depfile) end end diff --git a/xmake/scripts/base/project.lua b/xmake/scripts/base/project.lua index 53691e6a5..9e4d9e979 100644 --- a/xmake/scripts/base/project.lua +++ b/xmake/scripts/base/project.lua @@ -241,6 +241,17 @@ function project._api_add_values(scope, name, ...) table.join2(scope[name], ...) end +-- del configure values +function project._api_del_values(scope, name, ...) + + -- check + assert(scope and name) + + -- append values + scope[name] = scope[name] or {} + table.join2(scope[name], ...) +end + -- filter the configure value function project._filter(values) @@ -821,7 +832,7 @@ function project._load_targets(file) -- register interfaces for the subproject files newenv.add_subdirs = function (...) return project._api_add_subdirs(newenv, ...) end newenv.add_subfiles = function (...) return project._api_add_subfiles(newenv, ...) end - + -- register interfaces for setting values local interfaces = { "kind" , "headerdir" @@ -867,6 +878,12 @@ function project._load_targets(file) newenv["add_" .. interface] = function (...) return project._api_add_values(newenv._TARGET or newenv._CONFIGS._ADD, interface, ...) end end + -- register interfaces for deleting values + interfaces = { "files" } + for _, interface in ipairs(interfaces) do + newenv["del_" .. interface] = function (...) return project._api_del_values(newenv._TARGET or newenv._CONFIGS._ADD, interface, ...) end + end + -- done the project script local ok, errors = pcall(script) if not ok then diff --git a/xmake/scripts/tools/make.lua b/xmake/scripts/tools/make.lua index 9deeebd2f..e28019b5b 100644 --- a/xmake/scripts/tools/make.lua +++ b/xmake/scripts/tools/make.lua @@ -44,9 +44,9 @@ function make.main(self, mkfile, target) -- make command local cmd = nil if mkfile and os.isfile(mkfile) then - cmd = string.format("%s -f %s %s VERBOSE=%s 2> %s", self.name, mkfile, target or "", self._VERBOSE, xmake._NULDEV) + cmd = string.format("%s -j4 -f %s %s VERBOSE=%s", self.name, mkfile, target or "", self._VERBOSE) else - cmd = string.format("%s %s VERBOSE=%s 2> %s", self.name, target or "", self._VERBOSE, xmake._NULDEV) + cmd = string.format("%s -j4 %s VERBOSE=%s", self.name, target or "", self._VERBOSE) end -- done |
