diff options
| author | ruki <[email protected]> | 2015-06-29 11:11:22 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2015-06-29 11:11:22 +0800 |
| commit | bb38407c1a929f2b098022b1e3d9f1dc75798dbf (patch) | |
| tree | 9cc0b395e7a6613b97e07c8741ec4822d5d3218c /xmake/scripts/base/package.lua | |
| parent | de65696cf95ff6c266d3b0174c9c10e3711bb643 (diff) | |
package binary and static target
Diffstat (limited to 'xmake/scripts/base/package.lua')
| -rw-r--r-- | xmake/scripts/base/package.lua | 60 |
1 files changed, 56 insertions, 4 deletions
diff --git a/xmake/scripts/base/package.lua b/xmake/scripts/base/package.lua index 6a0e66afa..6407bf428 100644 --- a/xmake/scripts/base/package.lua +++ b/xmake/scripts/base/package.lua @@ -25,6 +25,7 @@ local package = package or {} -- load modules local os = require("base/os") +local rule = require("base/rule") local path = require("base/path") local utils = require("base/utils") local config = require("base/config") @@ -33,9 +34,32 @@ local platform = require("platform/platform") -- package target for the static library function package._done_static(target) + -- check + assert(target and target.name and target.archs) - -- continue - return 0 + -- the plat and mode + local plat = config.get("plat") + local mode = config.get("mode") + assert(plat and mode) + + -- package it + for arch, info in pairs(target.archs) do + + -- check + assert(info.targetdir and info.targetfile and info.outputdir) + + -- copy the static library file to the output directory + local ok, errors = os.cp(string.format("%s/%s", info.targetdir, info.targetfile), string.format("%s/%s.pkg/lib/%s/%s/%s/%s", info.outputdir, target.name, mode, plat, arch, path.filename(info.targetfile))) + + -- ok? + if not ok then + utils.error(errors) + return -1 + end + end + + -- ok + return 1 end -- package target for the shared library @@ -49,9 +73,37 @@ end -- package target for the binary library function package._done_binary(target) + -- check + assert(target and target.archs) + + -- the count of architectures + local count = 0 + for _, _ in pairs(target.archs) do count = count + 1 end - -- continue - return 0 + -- package it + local ok = nil + local errors = nil + for arch, info in pairs(target.archs) do + + -- check + assert(info.targetdir and info.targetfile and info.outputdir) + + -- copy the binary file to the output directory + if count == 1 then + ok, errors = os.cp(string.format("%s/%s", info.targetdir, info.targetfile), info.outputdir) + else + ok, errors = os.cp(string.format("%s/%s", info.targetdir, info.targetfile), string.format("%s/%s", info.outputdir, rule.filename(path.basename(info.targetfile) .. "_" .. arch, "binary"))) + end + + -- ok? + if not ok then + utils.error(errors) + return -1 + end + end + + -- ok + return 1 end -- package target from the default script |
