diff options
| author | ruki <[email protected]> | 2020-05-14 22:36:12 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2020-05-14 09:37:17 +0800 |
| commit | f7ece67bf3f768f98b22818aa13afd65a00831d7 (patch) | |
| tree | d974226c87da5721b9e3d013cbe1e13e0e24030f | |
| parent | 3d934a771f3a383f915d691ad3edb293aed58e4f (diff) | |
add set_policy api
| -rw-r--r-- | xmake/core/project/project.lua | 111 | ||||
| -rw-r--r-- | xmake/core/project/target.lua | 12 | ||||
| -rw-r--r-- | xmake/core/sandbox/modules/import/core/project/project.lua | 1 |
3 files changed, 74 insertions, 50 deletions
diff --git a/xmake/core/project/project.lua b/xmake/core/project/project.lua index d931a3c3b..f7abb5de1 100644 --- a/xmake/core/project/project.lua +++ b/xmake/core/project/project.lua @@ -595,44 +595,10 @@ function project._load_packages() return project._load_scope("package", true, false) end --- get interpreter -function project.interpreter() - - -- the interpreter has been initialized? return it directly - if project._INTERPRETER then - return project._INTERPRETER - end - - -- init interpreter - local interp = interpreter.new() - assert(interp) - - -- set root directory - interp:rootdir_set(project.directory()) - - -- set root scope - interp:rootscope_set("target") - - -- define apis for rule - interp:api_define(rule.apis()) - - -- define apis for task - interp:api_define(task.apis()) - - -- define apis for target - interp:api_define(target.apis()) - - -- define apis for option - interp:api_define(option.apis()) - - -- define apis for package - interp:api_define(package.apis()) +-- get project apis +function project.apis() - -- define apis for language - interp:api_define(language.apis()) - - -- define apis for project - interp:api_define + return { values = { @@ -675,6 +641,46 @@ function project.interpreter() , {"add_platformdirs", project._api_add_platformdirs } } } +end + +-- get interpreter +function project.interpreter() + + -- the interpreter has been initialized? return it directly + if project._INTERPRETER then + return project._INTERPRETER + end + + -- init interpreter + local interp = interpreter.new() + assert(interp) + + -- set root directory + interp:rootdir_set(project.directory()) + + -- set root scope + interp:rootscope_set("target") + + -- define apis for rule + interp:api_define(rule.apis()) + + -- define apis for task + interp:api_define(task.apis()) + + -- define apis for target + interp:api_define(target.apis()) + + -- define apis for option + interp:api_define(option.apis()) + + -- define apis for package + interp:api_define(package.apis()) + + -- define apis for language + interp:api_define(language.apis()) + + -- define apis for project + interp:api_define(project.apis()) -- register api: deprecated deprecated_project.api_register(interp) @@ -786,11 +792,31 @@ function project.get(name) return project._INFO and project._INFO:get(name) or nil end +-- get the project name +function project.name() + local name = project.get("project") + -- TODO multi project names? we only get the first name now. + -- and we need improve it in the future. + if type(name) == "table" then + name = name[1] + end + return name +end + -- get the project version, the root version of the target scope function project.version() return project.get("target.version") end +-- get the project policy, the root policy of the target scope +function project.policy(name) + local policies = project.get("target.policy") + if policies then + local value = policies[name] + return value and table.unwrap(value) + end +end + -- clear project cache to reload targets and options function project.clear() @@ -941,17 +967,6 @@ function project.mtimes() return project.interpreter():mtimes() end --- get the project name -function project.name() - local name = project.get("project") - -- TODO multi project names? we only get the first name now. - -- and we need improve it in the future. - if type(name) == "table" then - name = name[1] - end - return name -end - -- get the project modes function project.modes() local modes = project.get("modes") or {} diff --git a/xmake/core/project/target.lua b/xmake/core/project/target.lua index 5e67d0f7e..b466c9e2e 100644 --- a/xmake/core/project/target.lua +++ b/xmake/core/project/target.lua @@ -465,11 +465,18 @@ function _instance:version() end end end - - -- ok? return version, version_build end +-- get the target policy +function _instance:policy(name) + local policies = self:get("policy") + if policies then + local value = policies[name] + return value and table.unwrap(value) + end +end + -- get the base name of target file function _instance:basename() local filename = self:get("filename") @@ -1669,6 +1676,7 @@ function target.apis() , "target.set_configvar" , "target.set_runenv" , "target.set_toolchain" + , "target.set_policy" -- target.add_xxx , "target.add_values" , "target.add_runenvs" diff --git a/xmake/core/sandbox/modules/import/core/project/project.lua b/xmake/core/sandbox/modules/import/core/project/project.lua index 758f8218f..c6796af36 100644 --- a/xmake/core/sandbox/modules/import/core/project/project.lua +++ b/xmake/core/sandbox/modules/import/core/project/project.lua @@ -55,6 +55,7 @@ sandbox_core_project.version = project.version sandbox_core_project.require = project.require sandbox_core_project.requires = project.requires sandbox_core_project.requires_str = project.requires_str +sandbox_core_project.policy = project.policy -- load project function sandbox_core_project.load() |
