diff options
Diffstat (limited to 'xmake')
| -rw-r--r-- | xmake/core/language/language.lua | 7 | ||||
| -rw-r--r-- | xmake/core/project/deprecated/project.lua | 32 | ||||
| -rw-r--r-- | xmake/core/project/project.lua | 13 | ||||
| -rw-r--r-- | xmake/languages/cuda/xmake.lua | 3 | ||||
| -rw-r--r-- | xmake/rules/cuda/xmake.lua | 31 |
5 files changed, 22 insertions, 64 deletions
diff --git a/xmake/core/language/language.lua b/xmake/core/language/language.lua index a7fdddcc0..ee57172fe 100644 --- a/xmake/core/language/language.lua +++ b/xmake/core/language/language.lua @@ -103,6 +103,11 @@ function _instance:extensions() return extensions end +-- get the rules +function _instance:rules() + return self._INFO:get("rules") +end + -- get the source kinds function _instance:sourcekinds() return self._INFO:get("sourcekinds") @@ -221,6 +226,8 @@ function language._interpreter() { -- language.set_xxx "language.set_mixingkinds" + -- language.add_xxx + , "language.add_rules" } , script = { diff --git a/xmake/core/project/deprecated/project.lua b/xmake/core/project/deprecated/project.lua index a7b285381..85d05ed8f 100644 --- a/xmake/core/project/deprecated/project.lua +++ b/xmake/core/project/deprecated/project.lua @@ -264,38 +264,6 @@ function deprecated_project._api_is_option(interp, ...) return config.has(...) end --- patch target rules -function deprecated_project._patch_target_rules(target) - - -- TODO patch rules for the deprecated cuda link mode - -- we will remove this code in the future - local files = target:get("files") - if files and not target:rule("cuda.device_link") then - for _, sourcefile in ipairs(table.wrap(files)) do - if sourcefile:lower():endswith(".cu") then - local rules = {binary = "cuda.console", shared = "cuda.shared", static = "cuda.static"} - local rulename = rules[target:targetkind()] - if rulename then - local r = rule.rule(rulename) - if r then - target._RULES[rulename] = r - for _, deprule in ipairs(r:orderdeps()) do - local name = deprule:name() - if not target._RULES[name] then - target._RULES[name] = deprule - table.insert(target._ORDERULES, deprule) - end - end - table.insert(target._ORDERULES, r) - deprecated.add("add_rules(\"" .. rulename .. "\")", "set_kind(\"" .. target:targetkind() .. "\") for cuda") - end - end - break - end - end - end -end - -- register api function deprecated_project.api_register(interp) diff --git a/xmake/core/project/project.lua b/xmake/core/project/project.lua index ed9b87bb3..6e670ec3b 100644 --- a/xmake/core/project/project.lua +++ b/xmake/core/project/project.lua @@ -498,7 +498,7 @@ function project._load_targets() t._ORDERDEPS = t._ORDERDEPS or {} project._load_deps(t, targets, t._DEPS, t._ORDERDEPS) - -- load rules + -- load rules from target and language -- -- .e.g -- @@ -509,7 +509,15 @@ function project._load_targets() -- t._RULES = t._RULES or {} t._ORDERULES = t._ORDERULES or {} - for _, rulename in ipairs(table.wrap(t:get("rules"))) do + local rulenames = {} + table.join2(rulenames, t:get("rules")) + for _, sourcefile in ipairs(table.wrap(t:get("files"))) do + local lang = language.load_ex(path.extension(sourcefile)) + if lang and lang:rules() then + table.join2(rulenames, lang:rules()) + end + end + for _, rulename in ipairs(rulenames) do local r = project.rule(rulename) or rule.rule(rulename) if r then t._RULES[rulename] = r @@ -523,7 +531,6 @@ function project._load_targets() table.insert(t._ORDERULES, r) end end - deprecated_project._patch_target_rules(t) -- laod packages t._PACKAGES = t._PACKAGES or {} diff --git a/xmake/languages/cuda/xmake.lua b/xmake/languages/cuda/xmake.lua index e73823818..1d1f5b9d5 100644 --- a/xmake/languages/cuda/xmake.lua +++ b/xmake/languages/cuda/xmake.lua @@ -39,6 +39,9 @@ language("cuda") -- set mixing kinds set_mixingkinds("cu", "cc", "cxx", "as") + -- add rules + add_rules("cuda") + -- on load on_load("load") diff --git a/xmake/rules/cuda/xmake.lua b/xmake/rules/cuda/xmake.lua index 2f3564f63..0ec1ddaee 100644 --- a/xmake/rules/cuda/xmake.lua +++ b/xmake/rules/cuda/xmake.lua @@ -18,36 +18,9 @@ -- @file xmake.lua -- --- define rule: cuda static library -rule("cuda.static") +-- define rule: cuda +rule("cuda") -- add rules add_deps("cuda.device_link", "cuda.gencodes") - -- we must set kind before target.on_load(), may we will use target in on_load() - before_load(function (target) - target:set("kind", "static") - end) - --- define rule: cuda shared library -rule("cuda.shared") - - -- add rules - add_deps("cuda.device_link", "cuda.gencodes") - - -- we must set kind before target.on_load(), may we will use target in on_load() - before_load(function (target) - target:set("kind", "shared") - end) - --- define rule: cuda console -rule("cuda.console") - - -- add rules - add_deps("cuda.device_link", "cuda.gencodes") - - -- we must set kind before target.on_load(), may we will use target in on_load() - before_load(function (target) - target:set("kind", "binary") - end) - |
