summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2021-03-09 00:45:15 +0800
committerruki <[email protected]>2021-03-09 00:45:15 +0800
commitd2bf2df2c3afdf1335721ae37cfeb721ff130227 (patch)
tree5ab9417065ef1b3f90bf32d488f463f5fb66483b
parent297eac57c0369f473751a88e0b74f7857e74e462 (diff)
improve rules
-rw-r--r--xmake/core/base/path.lua5
-rw-r--r--xmake/core/project/target.lua5
2 files changed, 8 insertions, 2 deletions
diff --git a/xmake/core/base/path.lua b/xmake/core/base/path.lua
index aa0cd571a..9da3f57c4 100644
--- a/xmake/core/base/path.lua
+++ b/xmake/core/base/path.lua
@@ -69,9 +69,12 @@ function path.basename(p)
end
-- get the file extension of the path: .xxx
-function path.extension(p)
+function path.extension(p, level)
local i = p:lastof(".", true)
if i then
+ if level and level > 1 then
+ return path.extension(p:sub(1, i - 1), level - 1) .. p:sub(i)
+ end
return p:sub(i)
else
return ""
diff --git a/xmake/core/project/target.lua b/xmake/core/project/target.lua
index 079199b47..ee7e3f519 100644
--- a/xmake/core/project/target.lua
+++ b/xmake/core/project/target.lua
@@ -1105,7 +1105,10 @@ function _instance:filerules(sourcefile)
end
-- get target rules from the given sourcekind or extension
- for _, r in ipairs(table.wrap(key2rules[self:sourcekind_of(sourcefile)] or key2rules[path.extension(sourcefile):lower()])) do
+ local filename = path.filename(sourcefile):lower()
+ for _, r in ipairs(table.wrap(key2rules[path.extension(filename, 2)] or
+ key2rules[path.extension(filename)] or
+ key2rules[self:sourcekind_of(filename)])) do
table.insert(rules, r)
end
return rules