diff options
| author | ruki <[email protected]> | 2015-06-04 15:23:45 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2015-06-04 15:23:45 +0800 |
| commit | 83295bd3a1b27f844759aeadbbdc23f51e2f2d89 (patch) | |
| tree | e4d371b95497d791b07af5f0224aea40dfe647dd /xmake/scripts/tools | |
| parent | 740fa0e8d4948a7261bcbb19fe7c3ac16f1df041 (diff) | |
move clang compiler and linker to tools
Diffstat (limited to 'xmake/scripts/tools')
| -rw-r--r-- | xmake/scripts/tools/ar.lua | 64 | ||||
| -rw-r--r-- | xmake/scripts/tools/clang.lua | 128 | ||||
| -rw-r--r-- | xmake/scripts/tools/make.lua | 63 | ||||
| -rw-r--r-- | xmake/scripts/tools/tools.lua | 2 |
4 files changed, 256 insertions, 1 deletions
diff --git a/xmake/scripts/tools/ar.lua b/xmake/scripts/tools/ar.lua new file mode 100644 index 000000000..e39967117 --- /dev/null +++ b/xmake/scripts/tools/ar.lua @@ -0,0 +1,64 @@ +--!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 ar.lua +-- + +-- define module: ar +local ar = ar or {} + +-- load modules +local utils = require("base/utils") +local string = require("base/string") +local config = require("base/config") + +-- init the linker +function ar.init(name) + + -- save name + ar.name = name or "ar" + + -- init arflags + ar.arflags = "-crs" + +end + +-- make the link command +function ar.command_link(objfiles, targetfile, flags) + + -- make it + return string.format("%s %s %s %s", ar.name, flags, targetfile, objfiles) +end + +-- map gcc flag to the current linker flag +function ar.flag_map(flag) + + -- ok + return flag +end + +-- the main function +function ar.main(...) + + -- ok + return true +end + +-- return module: ar +return ar diff --git a/xmake/scripts/tools/clang.lua b/xmake/scripts/tools/clang.lua new file mode 100644 index 000000000..c11eb822e --- /dev/null +++ b/xmake/scripts/tools/clang.lua @@ -0,0 +1,128 @@ +--!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 clang.lua +-- + +-- load modules +local utils = require("base/utils") +local string = require("base/string") +local config = require("base/config") + +-- define module: clang +local clang = clang or {} + +-- the init function +function clang.init(name) + + -- save name + clang.name = name or "clang" + + -- the architecture + local arch = config.get("arch") + assert(arch) + + -- init flags for architecture + local flags_arch = "" + if arch == "x86" then flags_arch = "-m32" + elseif arch == "x64" then flags_arch = "-m64" + else flags_arch = "-arch " .. arch + end + + -- init cflags + clang.cflags = flags_arch + + -- init cxxflags + clang.cxxflags = flags_arch + + -- init mflags + clang.mflags = flags_arch + + -- init mxxflags + clang.mxxflags = flags_arch + + -- init asflags + clang.asflags = flags_arch + + -- init ldflags + clang.ldflags = flags_arch + + -- init shflags + clang.shflags = flags_arch .. " -dynamiclib" + +end + +-- make the compile command +function clang.command_compile(srcfile, objfile, flags) + + -- make it + return string.format("%s -c %s -o%s %s", clang.name, flags, objfile, srcfile) +end + +-- make the link command +function clang.command_link(objfiles, targetfile, flags) + + -- make it + return string.format("%s %s -o%s %s", clang.name, flags, targetfile, objfiles) +end + +-- make the define flag +function clang.flag_define(define) + + -- make it + return "-D" .. define +end + +-- make the includedir flag +function clang.flag_includedir(includedir) + + -- make it + return "-I" .. includedir +end + +-- make the link flag +function clang.flag_link(link) + + -- make it + return "-l" .. link +end + +-- make the linkdir flag +function clang.flag_linkdir(linkdir) + + -- make it + return "-L" .. linkdir +end + +-- map gcc flag to the current compiler flag +function clang.flag_map(flag) + + -- ok + return flag +end + +-- the main function +function clang.main(...) + + -- ok + return true +end + +-- return module: clang +return clang diff --git a/xmake/scripts/tools/make.lua b/xmake/scripts/tools/make.lua new file mode 100644 index 000000000..06a3a92dc --- /dev/null +++ b/xmake/scripts/tools/make.lua @@ -0,0 +1,63 @@ +--!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 make.lua +-- + +-- load modules +local os = require("base/os") +local utils = require("base/utils") + +-- define module: make +local make = make or {} + +-- the init function +function make.init(name) + + -- save name + make.name = name or "make" + + -- is verbose? + make._VERBOSE = utils.ifelse(xmake._OPTIONS.verbose, "-v", "") + +end + +-- the main function +function make.main(mkfile, target) + + -- make command + local cmd = nil + if mkfile and os.isfile(mkfile) then + cmd = string.format("%s -j4 -f %s %s VERBOSE=%s", make.name, mkfile, target or "", make._VERBOSE) + else + cmd = string.format("%s -j4 %s VERBOSE=%s", make.name, target or "", make._VERBOSE) + end + + -- done + local ok = os.execute(cmd) + if ok ~= 0 then + return false + end + + -- ok + return true +end + +-- return module: make +return make diff --git a/xmake/scripts/tools/tools.lua b/xmake/scripts/tools/tools.lua index e29a2718b..af095618e 100644 --- a/xmake/scripts/tools/tools.lua +++ b/xmake/scripts/tools/tools.lua @@ -40,7 +40,7 @@ function tools._match(name, toolname) if name:find("^" .. toolname .. "$") then return true end -- contains it? ok - if name:find(toolname, true) then return true end + if name:find(toolname, 1, true) then return true end -- not matched return false |
