summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2015-06-30 17:37:10 +0800
committerruki <[email protected]>2015-06-30 17:37:10 +0800
commit739a215a2ef11cfe1c8363e965ee19f82d41987d (patch)
treeee55311040c4e98b5e7462510b9f8886fc530f93
parenta9da9dee9f83abfe04ffbbd865156494c135161e (diff)
add packages and directories api
-rw-r--r--xmake/scripts/action/_package.lua2
-rw-r--r--xmake/scripts/base/project.lua26
2 files changed, 25 insertions, 3 deletions
diff --git a/xmake/scripts/action/_package.lua b/xmake/scripts/action/_package.lua
index 3fc9f6e4b..18d7d5024 100644
--- a/xmake/scripts/action/_package.lua
+++ b/xmake/scripts/action/_package.lua
@@ -65,7 +65,7 @@ function _package._build(arch, target_name)
-- rebuild it
if os.execute(string.format("xmake -r -P %s %s", xmake._PROJECT_DIR, target_name)) ~= 0 then
-- errors
- utils.error("build %s failed!", utils.ifelse(target_name, target_name, "all"))
+ utils.error("build failed!")
return false
end
diff --git a/xmake/scripts/base/project.lua b/xmake/scripts/base/project.lua
index b424c8988..85f652f2f 100644
--- a/xmake/scripts/base/project.lua
+++ b/xmake/scripts/base/project.lua
@@ -331,6 +331,20 @@ function project._api_add_subfiles(env, ...)
project._CURDIR = curdir
end
+-- load all packages from the given directories
+function project._api_add_pkgdirs(env, ...)
+
+ -- get all directories
+ local pkgdirs = {}
+ local dirs = table.join(...)
+ for _, dir in ipairs(dirs) do
+ table.insert(pkgdirs, dir .. "/*.pkg")
+ end
+
+ -- add all packages
+ project._api_add_subdirs(env, pkgdirs)
+end
+
-- set configure values
function project._api_set_values(scope, name, ...)
@@ -954,7 +968,11 @@ function project._load_options(file)
-- register interfaces for the functions
newenv.add_cfuncs = function (...) return project._api_add_cfuncs(newenv, ...) end
newenv.add_cxxfuncs = function (...) return project._api_add_cxxfuncs(newenv, ...) end
-
+
+ -- register interfaces for the package files
+ newenv.add_pkgdirs = function (...) return project._api_add_pkgdirs(newenv, ...) end
+ newenv.add_pkgs = function (...) return project._api_add_subdirs(newenv, ...) end
+
-- register interfaces for setting option values
local interfaces = { "enable"
, "showmenu"
@@ -1051,7 +1069,11 @@ function project._load_targets(file)
-- register interfaces for the functions
newenv.add_cfuncs = function (...) return project._api_add_cfuncs(newenv, ...) end
newenv.add_cxxfuncs = function (...) return project._api_add_cxxfuncs(newenv, ...) end
-
+
+ -- register interfaces for the package files
+ newenv.add_pkgdirs = function (...) return project._api_add_pkgdirs(newenv, ...) end
+ newenv.add_pkgs = function (...) return project._api_add_subdirs(newenv, ...) end
+
-- register interfaces for setting values
local interfaces = { "kind"
, "config_h_prefix"