diff options
| author | ruki <[email protected]> | 2016-01-14 09:19:14 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2016-01-14 09:19:14 +0800 |
| commit | cdcf953259aee5e7e1a06855ddbedbaabf585bc9 (patch) | |
| tree | 47b8e5de10522cca3b67354fa527b3525193e880 /xmake/core/base/main.lua | |
| parent | 8c50566e7ab2139b9f6c2976b9ce875b7ad11b7a (diff) | |
rename script directory to core
Diffstat (limited to 'xmake/core/base/main.lua')
| -rw-r--r-- | xmake/core/base/main.lua | 179 |
1 files changed, 179 insertions, 0 deletions
diff --git a/xmake/core/base/main.lua b/xmake/core/base/main.lua new file mode 100644 index 000000000..470815701 --- /dev/null +++ b/xmake/core/base/main.lua @@ -0,0 +1,179 @@ +--!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 main.lua +-- + +-- define module: main +local main = main or {} + +-- load modules +local os = require("base/os") +local path = require("base/path") +local utils = require("base/utils") +local option = require("base/option") +local action = require("action/action") + +-- init the option menu +local menu = +{ + -- title + title = xmake._VERSION .. ", The Automatic Cross-platform Build Tool" + + -- copyright +, copyright = "Copyright (C) 2015-2016 Ruki Wang, tboox.org\nCopyright (C) 2005-2014 Mike Pall, luajit.org" + + -- build project: xmake +, main = + { + -- usage + usage = "xmake [action] [options] [target]" + + -- description + , description = "Build the project if no given action." + + -- actions + , actions = action.list + + -- options + , options = + { + {'b', "build", "k", nil, "Build project. This is default building mode and optional." } + , {'u', "update", "k", nil, "Only relink and update the binary files." } + , {'r', "rebuild", "k", nil, "Rebuild the project." } + + , {} + , {'f', "file", "kv", "xmake.lua", "Read a given xmake.lua file." } + , {'P', "project", "kv", nil, "Change to the given project directory." + , "Search priority:" + , " 1. The Given Command Argument" + , " 2. The Envirnoment Variable: XMAKE_PROJECT_DIR" + , " 3. The Current Directory" } + + + , {} + , {'j', "jobs", "kv", nil, "Specifies the number of jobs to build simultaneously" } + , {'v', "verbose", "k", nil, "Print lots of verbose information." } + , {nil, "version", "k", nil, "Print the version number and exit." } + , {'h', "help", "k", nil, "Print this help message and exit." } + + , {} + , {nil, "target", "v", "all", "Build the given target." } + } + } + + -- the actions: xmake [action] +, action.menu + +} + +-- done help +function main._done_help() + + -- the options + local options = xmake._OPTIONS + assert(options) + + -- done help + if options.help then + + -- print menu + option.print_menu(options._ACTION) + + -- ok + return true + + -- done version + elseif options.version then + + -- print title + if option._MENU.title then + print(option._MENU.title) + end + + -- print copyright + if option._MENU.copyright then + print(option._MENU.copyright) + end + + -- ok + return true + end +end + +-- done option +function main._done_option() + + -- the options + local options = xmake._OPTIONS + assert(options) + + -- done help? + if main._done_help() then + return true + end + + -- done action + return action.done(options._ACTION or "build") +end + +-- the init function for main +function main._init() + + -- init the project directory + local projectdir = option.find(xmake._ARGV, "project", "P") or xmake._PROJECT_DIR + if projectdir and not path.is_absolute(projectdir) then + projectdir = path.absolute(projectdir) + elseif projectdir then + projectdir = path.translate(projectdir) + end + xmake._PROJECT_DIR = projectdir + assert(projectdir) + + -- init the xmake.lua file path + local projectfile = option.find(xmake._ARGV, "file", "f") or xmake._PROJECT_FILE + if projectfile and not path.is_absolute(projectfile) then + projectfile = path.absolute(projectfile, projectdir) + end + xmake._PROJECT_FILE = projectfile + assert(projectfile) +end + +-- the main function +function main.done() + + -- init + main._init() + + -- init option + if not option.init(xmake._ARGV, menu) then + return -1 + end + + -- done option + if not main._done_option() then + return -1 + end + + -- ok + return 0 +end + +-- return module: main +return main |
