diff options
| author | ruki <[email protected]> | 2015-05-27 08:44:21 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2015-05-27 08:44:21 +0800 |
| commit | 80f92040764d0e4d6c89c5f8d82f4a8dc1b54902 (patch) | |
| tree | 3e43d832af7e74fed0d79d7656058fbed694dc3c | |
| parent | 0e3df610b7db95590a9ad32eccfc7b2b2319b128 (diff) | |
add prober to ios platform
| -rw-r--r-- | xmake/scripts/platform/android/_android.lua | 7 | ||||
| -rw-r--r-- | xmake/scripts/platform/ios/_ios.lua | 19 | ||||
| -rw-r--r-- | xmake/scripts/platform/ios/_prober.lua | 121 | ||||
| -rw-r--r-- | xmake/scripts/platform/linux/_linux.lua | 8 | ||||
| -rw-r--r-- | xmake/scripts/platform/macosx/_macosx.lua | 12 | ||||
| -rw-r--r-- | xmake/scripts/platform/platform.lua | 8 | ||||
| -rw-r--r-- | xmake/scripts/platform/windows/_windows.lua | 8 |
7 files changed, 150 insertions, 33 deletions
diff --git a/xmake/scripts/platform/android/_android.lua b/xmake/scripts/platform/android/_android.lua index 93920dcc6..9de364e77 100644 --- a/xmake/scripts/platform/android/_android.lua +++ b/xmake/scripts/platform/android/_android.lua @@ -26,6 +26,9 @@ local _android = _android or {} -- init host _android._HOST = xmake._HOST +-- init architectures +_android._ARCHS = {"armv5te", "armv6", "armv7-a"} + -- make configure function _android.make(configs) @@ -35,10 +38,6 @@ function _android.make(configs) configs.formats.object = {"", ".o"} configs.formats.shared = {"", ".so"} - -- init the architecture scopes - configs.archs = {} - configs.archs.armv5te = {} - configs.archs.armv6 = {} end -- get the option menu for action: xmake config or global diff --git a/xmake/scripts/platform/ios/_ios.lua b/xmake/scripts/platform/ios/_ios.lua index 1cf1a135c..eee1f6587 100644 --- a/xmake/scripts/platform/ios/_ios.lua +++ b/xmake/scripts/platform/ios/_ios.lua @@ -23,8 +23,17 @@ -- define module: _ios local _ios = _ios or {} +-- load modules +local config = require("base/config") + -- init host -_ios._HOST = "macosx" +_ios._HOST = "macosx" + +-- init architectures +_ios._ARCHS = {"armv7", "armv7s", "arm64"} + +-- init prober +_ios._PROBER = require("platform/ios/_prober") -- make configure function _ios.make(configs) @@ -34,12 +43,10 @@ function _ios.make(configs) configs.formats.static = {"lib", ".a"} configs.formats.object = {"", ".o"} configs.formats.shared = {"", ".dylib"} + + -- init xcode sdk directory + configs.xcode_sdkdir = config.get("xcode_dir") .. "/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS" .. config.get("xcode_sdkver") .. ".sdk" - -- init the architecture scopes - configs.archs = {} - configs.archs.armv7 = {} - configs.archs.armv7s = {} - configs.archs.arm64 = {} end -- get the option menu for action: xmake config or global diff --git a/xmake/scripts/platform/ios/_prober.lua b/xmake/scripts/platform/ios/_prober.lua new file mode 100644 index 000000000..2209c14b9 --- /dev/null +++ b/xmake/scripts/platform/ios/_prober.lua @@ -0,0 +1,121 @@ +--!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 _prober.lua +-- + +-- load modules +local os = require("base/os") +local path = require("base/path") +local utils = require("base/utils") +local string = require("base/string") + +-- define module: _prober +local _prober = _prober or {} + +-- probe the xcode application directory +function _prober._probe_xcode(configs) + + -- get the xcode directory + local xcode_dir = configs.xcode_dir + + -- ok? + if xcode_dir and xcode_dir ~= "auto" then return true end + + -- clear it first + xcode_dir = nil + + -- attempt to get the default directory + if not xcode_dir then + if os.isdir("/Applications/Xcode.app") then + xcode_dir = "/Applications/Xcode.app" + end + end + + -- attempt to match the other directories + if not xcode_dir then + local dirs = os.match("/Applications/Xcode*.app", true) + if dirs and table.getn(dirs) ~= 0 then + xcode_dir = dirs[1] + end + end + + -- probe ok? update it + if xcode_dir then + configs.xcode_dir = xcode_dir + else + -- failed + utils.error("The Xcode directory is unknown now, please config it first!") + utils.error(" - xmake config --xcode_dir=xxx") + utils.error("or - xmake global --xcode_dir=xxx") + return false + end + + -- ok + return true +end + +-- probe the xcode sdk version +function _prober._probe_xcode_sdkver(configs) + + -- get the xcode sdk version + local xcode_sdkver = configs.xcode_sdkver + + -- ok? + if xcode_sdkver and xcode_sdkver ~= "auto" then return true end + + -- clear it first + xcode_sdkver = nil + + -- attempt to match the directory + if not xcode_sdkver then + local dirs = os.match(configs.xcode_dir .. "/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS*.sdk", true) + if dirs and table.getn(dirs) ~= 0 then + xcode_sdkver = string.match(dirs[1], "%d+%.%d+") + end + end + + -- probe ok? update it + if xcode_sdkver then + configs.xcode_sdkver = xcode_sdkver + else + -- failed + utils.error("The Xcode SDK version is unknown now, please config it first!") + utils.error(" - xmake config --xcode_sdkver=xxx") + utils.error("or - xmake global --xcode_sdkver=xxx") + return false + end + + -- ok + return true +end + +-- probe the configure and update the values with "auto" +function _prober.done(configs) + + -- probe the xcode application directory + if not _prober._probe_xcode(configs) then return end + + -- probe the xcode sdk version + if not _prober._probe_xcode_sdkver(configs) then return end + +end + +-- return module: _prober +return _prober diff --git a/xmake/scripts/platform/linux/_linux.lua b/xmake/scripts/platform/linux/_linux.lua index e33a81d8f..4b70986c4 100644 --- a/xmake/scripts/platform/linux/_linux.lua +++ b/xmake/scripts/platform/linux/_linux.lua @@ -26,6 +26,9 @@ local _linux = _linux or {} -- init host _linux._HOST = "linux" +-- init architectures +_linux._ARCHS = {"x86", "x64"} + -- make configure function _linux.make(configs) @@ -34,11 +37,6 @@ function _linux.make(configs) configs.formats.static = {"lib", ".a"} configs.formats.object = {"", ".o"} configs.formats.shared = {"", ".so"} - - -- init the architecture scopes - configs.archs = {} - configs.archs.x86 = {} - configs.archs.x64 = {} end -- get the option menu for action: xmake config or global diff --git a/xmake/scripts/platform/macosx/_macosx.lua b/xmake/scripts/platform/macosx/_macosx.lua index 2dcdf4b06..e19e5d5ea 100644 --- a/xmake/scripts/platform/macosx/_macosx.lua +++ b/xmake/scripts/platform/macosx/_macosx.lua @@ -24,15 +24,14 @@ local _macosx = _macosx or {} -- load modules -local os = require("base/os") -local path = require("base/path") -local utils = require("base/utils") local config = require("base/config") -local string = require("base/string") -- init host _macosx._HOST = "macosx" +-- init architectures +_macosx._ARCHS = {"x86", "x64"} + -- init prober _macosx._PROBER = require("platform/macosx/_prober") @@ -45,11 +44,6 @@ function _macosx.make(configs) configs.formats.object = {"", ".o"} configs.formats.shared = {"", ".dylib"} - -- init the architectures - configs.archs = {} - configs.archs.x86 = {} - configs.archs.x64 = {} - -- init xcode sdk directory configs.xcode_sdkdir = config.get("xcode_dir") .. "/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX" .. config.get("xcode_sdkver") .. ".sdk" end diff --git a/xmake/scripts/platform/platform.lua b/xmake/scripts/platform/platform.lua index 4cc5df0da..b47623216 100644 --- a/xmake/scripts/platform/platform.lua +++ b/xmake/scripts/platform/platform.lua @@ -139,10 +139,10 @@ function platform.archs(plat) -- load all platform configs local archs = {} - local configs = platform._configs(plat) - if configs and configs.archs then - for arch, _ in pairs(configs.archs) do - archs[table.getn(archs) + 1] = arch + local p = platform._load(plat) + if p and p._ARCHS then + for _, arch in ipairs(p._ARCHS) do + archs[table.getn(archs) + 1] = arch end end diff --git a/xmake/scripts/platform/windows/_windows.lua b/xmake/scripts/platform/windows/_windows.lua index 293958dae..bda11aa07 100644 --- a/xmake/scripts/platform/windows/_windows.lua +++ b/xmake/scripts/platform/windows/_windows.lua @@ -26,6 +26,9 @@ local _windows = _windows or {} -- init host _windows._HOST = "windows" +-- init architectures +_windows._ARCHS = {"x86", "x64"} + -- make configure function _windows.make(configs) @@ -35,11 +38,6 @@ function _windows.make(configs) configs.formats.object = {"", ".obj"} configs.formats.shared = {"", ".dll"} configs.formats.console = {"", ".exe"} - - -- init the architecture scopes - configs.archs = {} - configs.archs.x86 = {} - configs.archs.x64 = {} end -- get the option menu for action: xmake config or global |
