summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2019-02-11 22:35:12 +0800
committerruki <[email protected]>2019-02-11 09:31:14 +0800
commit25bd4311c541cbf6329b8a309d8d47ceeaee5184 (patch)
tree6bb22bd3f2481f1693eb2c48e248269063c51eb0
parentb4763becbdab9433f46b96793c64968cc1f34241 (diff)
mark set_modes as deprecated
-rw-r--r--CHANGELOG.md2
-rw-r--r--xmake/core/project/deprecated/project.lua21
-rw-r--r--xmake/core/sandbox/modules/import/core/project/project.lua11
3 files changed, 33 insertions, 1 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 7ffa1eb5f..e30870954 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -26,6 +26,7 @@
* [#327](https://github.com/xmake-io/xmake/issues/327): Support conan package manager for `lib.detect.find_package`
* [#319](https://github.com/xmake-io/xmake/issues/319): Add `add_headerfiles` and `add_headerdirs` to improve to set header files and directories
* Improve `lib.detect.find_package` and add builtin `find_packages("zlib 1.x", "openssl", {xxx = ...})` api
+* Mark `set_modes()` as deprecated, we use `add_rules("mode.debug", "mode.release")` instead of it
### Bugs fixed
@@ -574,6 +575,7 @@
* [#327](https://github.com/xmake-io/xmake/issues/327): 改进`lib.detect.find_package`增加对conan包管理器的支持
* [#319](https://github.com/xmake-io/xmake/issues/319): 添加`add_headerfiles`和`add_headerdirs`接口去改进头文件的设置
* 改进`lib.detect.find_package`并且添加内建的`find_packages("zlib 1.x", "openssl", {xxx = ...})`接口
+* 标记`set_modes()`作为废弃接口, 我们使用`add_rules("mode.debug", "mode.release")`来替代它
### Bugs修复
diff --git a/xmake/core/project/deprecated/project.lua b/xmake/core/project/deprecated/project.lua
index a7df6594c..45353098b 100644
--- a/xmake/core/project/deprecated/project.lua
+++ b/xmake/core/project/deprecated/project.lua
@@ -101,6 +101,24 @@ function deprecated_project._api_add_packages(interp, ...)
return deprecated_project._api_add_pkgs(interp, ...)
end
+-- set modes
+function deprecated_project._api_set_modes(interp, ...)
+
+ -- get api function
+ local apifunc = interp:api_func("set_modes")
+ assert(apifunc)
+
+ -- register api
+ interp:api_register_builtin("set_modes", function (...)
+
+ -- deprecated
+ deprecated.add("add_rules(\"mode.debug\", \"mode.release\")", "set_modes(\"debug\", \"release\")")
+
+ -- dispatch it
+ apifunc(...)
+ end)
+end
+
-- add_csnippet/add_cxxsnippet for option
function deprecated_project._api_option_add_cxsnippet(interp, apiname)
@@ -244,6 +262,9 @@ function deprecated_project.api_register(interp)
-- register api: is_option() to root
interp:api_register(nil, "is_option", deprecated_project._api_is_option)
+ -- register api: set_modes() to root
+ deprecated_project._api_set_modes(interp)
+
-- register api: add_csnippet/add_cxxsnippet() to option
deprecated_project._api_option_add_cxsnippet(interp, "add_csnippet")
deprecated_project._api_option_add_cxsnippet(interp, "add_cxxsnippet")
diff --git a/xmake/core/sandbox/modules/import/core/project/project.lua b/xmake/core/sandbox/modules/import/core/project/project.lua
index a5b3d829d..448ab75a1 100644
--- a/xmake/core/sandbox/modules/import/core/project/project.lua
+++ b/xmake/core/sandbox/modules/import/core/project/project.lua
@@ -169,7 +169,16 @@ end
-- get the project modes
function sandbox_core_project.modes()
- return project.get("modes")
+ local modes = project.get("modes") or {}
+ for _, target in pairs(table.wrap(project.targets())) do
+ for _, rule in ipairs(target:orderules()) do
+ local name = rule:name()
+ if name:startswith("mode.") then
+ table.insert(modes, name:sub(6))
+ end
+ end
+ end
+ return table.unique(modes)
end
-- get the the given require info