summaryrefslogtreecommitdiff
path: root/xmake/scripts/platform/iphoneos/_prober.lua
diff options
context:
space:
mode:
authorruki <[email protected]>2015-05-27 09:32:01 +0800
committerruki <[email protected]>2015-05-27 09:32:01 +0800
commit3aab30fc254ae7e9bd138aff2bb263af0d447017 (patch)
treebd9e4c95b0e0be22655238f9d51102ac0f48822f /xmake/scripts/platform/iphoneos/_prober.lua
parent80f92040764d0e4d6c89c5f8d82f4a8dc1b54902 (diff)
add prober to all platforms
Diffstat (limited to 'xmake/scripts/platform/iphoneos/_prober.lua')
-rw-r--r--xmake/scripts/platform/iphoneos/_prober.lua143
1 files changed, 143 insertions, 0 deletions
diff --git a/xmake/scripts/platform/iphoneos/_prober.lua b/xmake/scripts/platform/iphoneos/_prober.lua
new file mode 100644
index 000000000..52b0e5df4
--- /dev/null
+++ b/xmake/scripts/platform/iphoneos/_prober.lua
@@ -0,0 +1,143 @@
+--!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 architecture
+function _prober._probe_arch(configs)
+
+ -- get the architecture
+ local arch = configs.arch
+
+ -- ok?
+ if arch and arch ~= "auto" then return true end
+
+ -- init the default architecture
+ configs.arch = "armv7"
+
+ -- ok
+ return true
+end
+
+-- 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 then
+ for _, dir in ipairs(dirs) do
+ xcode_sdkver = string.match(dir, "%d+%.%d+")
+ if xcode_sdkver then break end
+ end
+ 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 architecture
+ if not _prober._probe_arch(configs) then return end
+
+ -- 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