From e368bcfdb1e8326579a2ffb56e57ec6b316a29f0 Mon Sep 17 00:00:00 2001 From: ruki Date: Mon, 10 Jun 2019 21:00:49 +0800 Subject: patch rules for deprecated cuda link mode --- xmake/core/project/deprecated/project.lua | 33 +++++++++++++++++++++++++++++++ xmake/core/project/project.lua | 1 + 2 files changed, 34 insertions(+) diff --git a/xmake/core/project/deprecated/project.lua b/xmake/core/project/deprecated/project.lua index b55970c86..a7b285381 100644 --- a/xmake/core/project/deprecated/project.lua +++ b/xmake/core/project/deprecated/project.lua @@ -27,6 +27,7 @@ local path = require("base/path") local utils = require("base/utils") local table = require("base/table") local string = require("base/string") +local rule = require("project/rule") local config = require("project/config") local platform = require("platform/platform") local deprecated = require("base/deprecated") @@ -263,6 +264,38 @@ 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 07fb6792f..ed9b87bb3 100644 --- a/xmake/core/project/project.lua +++ b/xmake/core/project/project.lua @@ -523,6 +523,7 @@ function project._load_targets() table.insert(t._ORDERULES, r) end end + deprecated_project._patch_target_rules(t) -- laod packages t._PACKAGES = t._PACKAGES or {} -- cgit v1.3.1