summaryrefslogtreecommitdiff
path: root/xmake/scripts/base
diff options
context:
space:
mode:
authorruki <[email protected]>2015-05-17 10:28:22 +0800
committerruki <[email protected]>2015-05-17 10:28:22 +0800
commit7be8238f634969e80e678f59ab418900f846b094 (patch)
tree75c956fde24193c7d6e21a7406de5cc8518d9ab8 /xmake/scripts/base
parentb7344cd33b93ba1a1aa96eea057adf4b71f7139a (diff)
add some os interfaces
Diffstat (limited to 'xmake/scripts/base')
-rw-r--r--xmake/scripts/base/main.lua12
-rw-r--r--xmake/scripts/base/os.lua102
-rw-r--r--xmake/scripts/base/project.lua2
3 files changed, 114 insertions, 2 deletions
diff --git a/xmake/scripts/base/main.lua b/xmake/scripts/base/main.lua
index 17f0af74b..1eb0fc5e9 100644
--- a/xmake/scripts/base/main.lua
+++ b/xmake/scripts/base/main.lua
@@ -266,10 +266,13 @@ function main._done_option()
assert(options)
-- init the project directory
- options.project = options.project or options._DEFAULTS.project or _PROJECT_DIR
+ options.project = options.project or options._DEFAULTS.project or xmake._PROJECT_DIR
options.project = path.absolute(options.project)
assert(options.project)
+ -- save the project directory
+ xmake._PROJECT_DIR = options.project
+
-- init the xmake.xproj file path
options.file = options.file or options._DEFAULTS.file or "xmake.xproj"
if not path.is_absolute(options.file) then
@@ -283,6 +286,13 @@ function main._done_option()
-- load xmake.xproj file
errors = project.loadxproj(options.file)
end
+ assert(config._CONFIGS)
+
+ -- init the build directory
+ if config._CONFIGS.buildir and not path.is_absolute(config._CONFIGS.buildir) then
+ config._CONFIGS.buildir = path.absolute(config._CONFIGS.buildir, xmake._PROJECT_DIR)
+ end
+ assert(config._CONFIGS.buildir)
-- done help
if options.help then
diff --git a/xmake/scripts/base/os.lua b/xmake/scripts/base/os.lua
new file mode 100644
index 000000000..e87eb1ec9
--- /dev/null
+++ b/xmake/scripts/base/os.lua
@@ -0,0 +1,102 @@
+--!The Automatic Cross-platform Build Tool
+--
+-- XMake is free software; you can redistribute it and/or modify
+-- it under the terms of the GNU Lesser General Public License as published by
+-- the Free Software Foundation; either version 2.1 of the License, or
+-- (at your option) any later version.
+--
+-- XMake is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+-- GNU Lesser General Public License for more details.
+--
+-- You should have received a copy of the GNU Lesser General Public License
+-- along with XMake;
+-- If not, see <a href="http://www.gnu.org/licenses/"> http://www.gnu.org/licenses/</a>
+--
+-- Copyright (C) 2009 - 2015, ruki All rights reserved.
+--
+-- @author ruki
+-- @file os.lua
+--
+
+-- define module: os
+local os = os or {}
+
+-- copy file or directory
+function os.cp(src, dst)
+
+ -- check
+ assert(src and dst)
+
+ -- is file?
+ if os.isfile(src) then
+ -- copy file
+ if not os.cpfile(src, dst) then
+ return false, string.format("cannot copy file %s to %s!", src, dst)
+ end
+ -- is directory?
+ elseif os.isdir(src) then
+ -- copy directory
+ if not os.cpdir(src, dst) then
+ return false, string.format("cannot copy directory %s to %s!", src, dst)
+ end
+ -- not exists?
+ else
+ return false, string.format("cannot copy file %s, not found this file!", src)
+ end
+
+ -- ok
+ return true
+end
+
+-- move file or directory
+function os.mv(src, dst)
+
+ -- check
+ assert(src and dst)
+
+ -- exists file or directory?
+ if os.exists(src) then
+ -- move file or directory
+ if not os.rename(src, dst) then
+ return false, string.format("cannot move %s to %s!", src, dst)
+ end
+ -- not exists?
+ else
+ return false, string.format("cannot move %s to %s, not found this file!", src, dst)
+ end
+
+ -- ok
+ return true
+end
+
+-- remove file or directory
+function os.rm(path)
+
+ -- check
+ assert(path)
+
+ -- is file?
+ if os.isfile(path) then
+ -- remove file
+ if not os.rmfile(path) then
+ return false, string.format("cannot remove file %s!", path)
+ end
+ -- is directory?
+ elseif os.isdir(path) then
+ -- remove directory
+ if not os.rmdir(path) then
+ return false, string.format("cannot remove directory %s!", path)
+ end
+ -- not exists?
+ else
+ return false, string.format("cannot remove file %s, not found this file!", path)
+ end
+
+ -- ok
+ return true
+end
+
+-- return module: os
+return os
diff --git a/xmake/scripts/base/project.lua b/xmake/scripts/base/project.lua
index 1a25b9bda..73483ba5c 100644
--- a/xmake/scripts/base/project.lua
+++ b/xmake/scripts/base/project.lua
@@ -58,7 +58,7 @@ function project.loadxproj(file)
local target = config.getarget()
return utils.ifelse(target, target.output, nil);
elseif v == "projectdir" then
- return xmake._OPTIONS.project
+ return xmake._PROJECT_DIR
end
return v
end