summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2026-01-08 00:54:34 +0800
committerruki <[email protected]>2026-01-09 17:59:08 +0800
commitf2184314dfa6d218bc6e0383386ec8bdd7bb8ef2 (patch)
treefcdb170e67374510797fff98c59e12b0d758500d
parent5a0021308f56cd3399425e87945d66839753c5c3 (diff)
add default scheme
-rw-r--r--xmake/core/package/package.lua1
-rw-r--r--xmake/core/package/scheme.lua17
2 files changed, 16 insertions, 2 deletions
diff --git a/xmake/core/package/package.lua b/xmake/core/package/package.lua
index a3e09217c..60391c745 100644
--- a/xmake/core/package/package.lua
+++ b/xmake/core/package/package.lua
@@ -2490,6 +2490,7 @@ function _instance:schemes_orderlist()
table.insert(schemes_orderlist, scheme.new(name, {package = self}))
end
self._SCHEMES_ORDERLIST = schemes_orderlist
+ self._CURRENT_SCHEME = schemes_orderlist[1]
end
return schemes_orderlist
end
diff --git a/xmake/core/package/scheme.lua b/xmake/core/package/scheme.lua
index a7166283a..1aa392437 100644
--- a/xmake/core/package/scheme.lua
+++ b/xmake/core/package/scheme.lua
@@ -60,6 +60,11 @@ function _instance:type()
return "scheme"
end
+-- is default scheme?
+function _instance:is_default()
+ return self:name() == "__default__"
+end
+
-- get the it's package
function _instance:package()
return self._PACKAGE
@@ -67,7 +72,11 @@ end
-- get the scheme configuration
function _instance:get(name)
- return self._INFO:get(name)
+ local value = self._INFO:get(name)
+ if value == nil and self:is_default() and self:package() then
+ value = self:package():get(name)
+ end
+ return value
end
-- set the value to scheme info
@@ -82,7 +91,11 @@ end
-- get the extra configuration
function _instance:extraconf(name, item, key)
- return self._INFO:extraconf(name, item, key)
+ local value = self._INFO:extraconf(name, item, key)
+ if value == nil and self:is_default() and self:package() then
+ value = self:package():extraconf(name, item, key)
+ end
+ return value
end
-- set the extra configuration