summaryrefslogtreecommitdiff
path: root/xmake/scripts
diff options
context:
space:
mode:
authorruki <[email protected]>2015-06-16 21:01:44 +0800
committerruki <[email protected]>2015-06-16 21:01:44 +0800
commit3d97768287a089f862d841cb697b48852941b002 (patch)
tree2b71ddfd936e2d7117d057eee08c6c44a603f190 /xmake/scripts
parentd549aaedf96e6d6eb77e9d588dc0a0269cd1ae71 (diff)
modify makefile rule and enable make -j4
Diffstat (limited to 'xmake/scripts')
-rw-r--r--xmake/scripts/base/makefile.lua24
-rw-r--r--xmake/scripts/base/project.lua19
-rw-r--r--xmake/scripts/tools/make.lua4
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