summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2017-02-27 20:09:26 +0800
committerruki <[email protected]>2017-02-27 20:09:26 +0800
commit1a93fd94a1f1f24e4dc0307796438772c88eb436 (patch)
tree041c823ebfb4667c44a59852e866813c6d0083fb
parent65f49bd7b23dbbb2516b93518906f451cd35a7c0 (diff)
fix load language error
-rw-r--r--xmake/core/language/language.lua20
-rwxr-xr-xxmake/languages/asm/xmake.lua3
-rwxr-xr-xxmake/languages/c++/xmake.lua3
-rwxr-xr-xxmake/languages/dlang/xmake.lua5
-rwxr-xr-xxmake/languages/golang/xmake.lua3
-rwxr-xr-xxmake/languages/objc++/xmake.lua3
-rwxr-xr-xxmake/languages/rust/xmake.lua3
-rwxr-xr-xxmake/languages/swift/xmake.lua3
8 files changed, 38 insertions, 5 deletions
diff --git a/xmake/core/language/language.lua b/xmake/core/language/language.lua
index 97c7d555f..1b2eff42c 100644
--- a/xmake/core/language/language.lua
+++ b/xmake/core/language/language.lua
@@ -153,6 +153,17 @@ function _instance:targetflags()
return self._INFO.targetflags
end
+-- get the mixing kinds for linker
+--
+-- .e.g
+-- {"cc", "cxx"}
+--
+function _instance:mixingkinds()
+
+ -- get it
+ return self._INFO.mixingkinds
+end
+
-- get the name flags
function _instance:nameflags()
@@ -231,6 +242,7 @@ function language._interpreter()
{
-- language.set_xxx
"language.set_menu"
+ , "language.set_mixingkinds"
}
, script =
{
@@ -570,7 +582,7 @@ function language.linkerinfos_of(targetkind, sourcekinds)
-- make linker infos
linkerinfos = {}
for name, instance in pairs(languages) do
- for sourcekind, _ in pairs(instance:sourcekinds()) do
+ for _, mixingkind in ipairs(table.wrap(instance:mixingkinds())) do
local targetflags = instance:targetflags()
for _targetkind, linkerkind in pairs(instance:targetkinds()) do
@@ -585,8 +597,8 @@ function language.linkerinfos_of(targetkind, sourcekinds)
if linkerflag then
linkerinfo.linkerflag = linkerflag
end
- linkerinfo.sourcekinds = linkerinfo.sourcekinds or {}
- linkerinfo.sourcekinds[sourcekind] = 1
+ linkerinfo.mixingkinds = linkerinfo.mixingkinds or {}
+ linkerinfo.mixingkinds[mixingkind] = 1
linkerinfo.sourcecount = (linkerinfo.sourcecount or 0) + 1
end
end
@@ -603,7 +615,7 @@ function language.linkerinfos_of(targetkind, sourcekinds)
-- match all source kinds?
local count = 0
for _, sourcekind in ipairs(sourcekinds) do
- count = count + (linkerinfo.sourcekinds[sourcekind] or 0)
+ count = count + (linkerinfo.mixingkinds[sourcekind] or 0)
end
if count == #sourcekinds then
table.insert(results, linkerinfo)
diff --git a/xmake/languages/asm/xmake.lua b/xmake/languages/asm/xmake.lua
index 11fb8732b..4fcf0e6c2 100755
--- a/xmake/languages/asm/xmake.lua
+++ b/xmake/languages/asm/xmake.lua
@@ -37,6 +37,9 @@ language("asm")
-- set target flags
set_targetflags {binary = "ldflags", static = "arflags", shared = "shflags"}
+ -- set mixing kinds
+ set_mixingkinds("as")
+
-- on load
on_load("load")
diff --git a/xmake/languages/c++/xmake.lua b/xmake/languages/c++/xmake.lua
index d91855d2c..a2c24e82a 100755
--- a/xmake/languages/c++/xmake.lua
+++ b/xmake/languages/c++/xmake.lua
@@ -37,6 +37,9 @@ language("c++")
-- set target flags
set_targetflags {binary = "ldflags", static = "arflags", shared = "shflags"}
+ -- set mixing kinds
+ set_mixingkinds("cc", "cxx", "as")
+
-- on load
on_load("load")
diff --git a/xmake/languages/dlang/xmake.lua b/xmake/languages/dlang/xmake.lua
index c8ae07fb2..493b5d81f 100755
--- a/xmake/languages/dlang/xmake.lua
+++ b/xmake/languages/dlang/xmake.lua
@@ -26,7 +26,7 @@
language("dlang")
-- set source file kinds
- set_sourcekinds {dc = ".d", cc = ".c", cxx = {".cc", ".cpp", ".cxx"}}
+ set_sourcekinds {dc = ".d"}
-- set source file flags
set_sourceflags {dc = "dcflags"}
@@ -37,6 +37,9 @@ language("dlang")
-- set target flags
set_targetflags {binary = "ldflags", static = "arflags", shared = "shflags"}
+ -- set mixing kinds
+ set_mixingkinds("dc", "cc", "cxx", "as")
+
-- on load
on_load("load")
diff --git a/xmake/languages/golang/xmake.lua b/xmake/languages/golang/xmake.lua
index dc1873f09..72f0faceb 100755
--- a/xmake/languages/golang/xmake.lua
+++ b/xmake/languages/golang/xmake.lua
@@ -37,6 +37,9 @@ language("golang")
-- set target flags
set_targetflags {binary = "ldflags", static = "arflags"}
+ -- set mixing kinds
+ set_mixingkinds("gc")
+
-- on load
on_load("load")
diff --git a/xmake/languages/objc++/xmake.lua b/xmake/languages/objc++/xmake.lua
index 71792a9fc..908ef206d 100755
--- a/xmake/languages/objc++/xmake.lua
+++ b/xmake/languages/objc++/xmake.lua
@@ -37,6 +37,9 @@ language("objc++")
-- set target flags
set_targetflags {binary = "ldflags", static = "arflags", shared = "shflags"}
+ -- set mixing kinds
+ set_mixingkinds("mm", "mxx", "cc", "cxx", "as")
+
-- on load
on_load("load")
diff --git a/xmake/languages/rust/xmake.lua b/xmake/languages/rust/xmake.lua
index acb0d8ff3..87cd00d7d 100755
--- a/xmake/languages/rust/xmake.lua
+++ b/xmake/languages/rust/xmake.lua
@@ -37,6 +37,9 @@ language("rust")
-- set target flags
set_targetflags {binary = "ldflags", static = "arflags", shared = "shflags"}
+ -- set mixing kinds
+ set_mixingkinds("rc")
+
-- on load
on_load("load")
diff --git a/xmake/languages/swift/xmake.lua b/xmake/languages/swift/xmake.lua
index f031069cb..4686ddc2f 100755
--- a/xmake/languages/swift/xmake.lua
+++ b/xmake/languages/swift/xmake.lua
@@ -37,6 +37,9 @@ language("swift")
-- set target flags
set_targetflags {binary = "ldflags", static = "arflags", shared = "shflags"}
+ -- set mixing kinds
+ set_mixingkinds("sc", "mm", "mxx", "cc", "cxx")
+
-- on load
on_load("load")