diff options
| author | ruki <[email protected]> | 2017-02-27 20:09:26 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2017-02-27 20:09:26 +0800 |
| commit | 1a93fd94a1f1f24e4dc0307796438772c88eb436 (patch) | |
| tree | 041c823ebfb4667c44a59852e866813c6d0083fb | |
| parent | 65f49bd7b23dbbb2516b93518906f451cd35a7c0 (diff) | |
fix load language error
| -rw-r--r-- | xmake/core/language/language.lua | 20 | ||||
| -rwxr-xr-x | xmake/languages/asm/xmake.lua | 3 | ||||
| -rwxr-xr-x | xmake/languages/c++/xmake.lua | 3 | ||||
| -rwxr-xr-x | xmake/languages/dlang/xmake.lua | 5 | ||||
| -rwxr-xr-x | xmake/languages/golang/xmake.lua | 3 | ||||
| -rwxr-xr-x | xmake/languages/objc++/xmake.lua | 3 | ||||
| -rwxr-xr-x | xmake/languages/rust/xmake.lua | 3 | ||||
| -rwxr-xr-x | xmake/languages/swift/xmake.lua | 3 |
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") |
