summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2017-02-22 20:56:56 +0800
committerruki <[email protected]>2017-02-22 20:56:56 +0800
commit28519b50187de9a1f69900c8ab58c73e3a54707c (patch)
tree4f5683ebca72e6385f7f3c2b546746bce928b896
parent07090c9dcd4c9deb42b2f8aa47072a9f8c518d85 (diff)
fix run format issues and improve to load swift flags
-rw-r--r--xmake/core/sandbox/modules/string.lua7
-rw-r--r--xmake/platforms/iphoneos/check.lua20
-rw-r--r--xmake/platforms/iphoneos/load.lua70
-rw-r--r--xmake/platforms/macosx/load.lua6
-rw-r--r--xmake/platforms/watchos/check.lua20
-rw-r--r--xmake/platforms/watchos/load.lua70
6 files changed, 88 insertions, 105 deletions
diff --git a/xmake/core/sandbox/modules/string.lua b/xmake/core/sandbox/modules/string.lua
index 8d97cc526..3079c6e23 100644
--- a/xmake/core/sandbox/modules/string.lua
+++ b/xmake/core/sandbox/modules/string.lua
@@ -49,8 +49,11 @@ function sandbox_string.vformat(format, ...)
-- ignore %$(...)
format = format:gsub("%%%$", "__$__")
- -- format string
- local result = string.format(format, ...)
+ -- format string if exists arguments
+ local result = format
+ if #{...} > 0 then
+ result = string.format(format, ...)
+ end
assert(result)
-- get filter from the current sandbox
diff --git a/xmake/platforms/iphoneos/check.lua b/xmake/platforms/iphoneos/check.lua
index 035051dee..973b96870 100644
--- a/xmake/platforms/iphoneos/check.lua
+++ b/xmake/platforms/iphoneos/check.lua
@@ -43,9 +43,15 @@ end
-- check the toolchains
function _check_toolchains(config)
- -- iphoneos or iphonesimulator?
+ -- init architecture
local arch = config.get("arch")
- if arch == "i386" or arch == "x86_64" then
+ local simulator = (arch == "i386" or arch == "x86_64")
+
+ -- init cross
+ local cross = ifelse(simulator, "xcrun -sdk iphonesimulator ", "xcrun -sdk iphoneos ")
+
+ -- iphoneos or iphonesimulator?
+ if simulator then
checker.check_toolchain(config, "cc", "xcrun -sdk iphonesimulator ", "clang", "the c compiler")
checker.check_toolchain(config, "cxx", "xcrun -sdk iphonesimulator ", "clang", "the c++ compiler")
checker.check_toolchain(config, "cxx", "xcrun -sdk iphonesimulator ", "clang++", "the c++ compiler")
@@ -59,7 +65,6 @@ function _check_toolchains(config)
checker.check_toolchain(config, "ex", "xcrun -sdk iphonesimulator ", "ar", "the static library extractor")
checker.check_toolchain(config, "sh", "xcrun -sdk iphonesimulator ", "clang++", "the shared library linker")
checker.check_toolchain(config, "sh", "xcrun -sdk iphonesimulator ", "clang", "the shared library linker")
- checker.check_toolchain(config, "sc", "xcrun -sdk iphonesimulator ", "swiftc", "the swift compiler")
else
checker.check_toolchain(config, "cc", "xcrun -sdk iphoneos ", "clang", "the c compiler")
checker.check_toolchain(config, "cxx", "xcrun -sdk iphoneos ", "clang", "the c++ compiler")
@@ -74,8 +79,15 @@ function _check_toolchains(config)
checker.check_toolchain(config, "ex", "xcrun -sdk iphoneos ", "ar", "the static library extractor")
checker.check_toolchain(config, "sh", "xcrun -sdk iphoneos ", "clang++", "the shared library linker")
checker.check_toolchain(config, "sh", "xcrun -sdk iphoneos ", "clang", "the shared library linker")
- checker.check_toolchain(config, "sc", "xcrun -sdk iphoneos ", "swiftc", "the swift compiler")
end
+
+ -- check for swift tools
+ checker.check_toolchain_from_env(config, "sc", "SC", "the swift compiler")
+ checker.check_toolchain(config, "sc", cross, "swiftc", "the swift compiler")
+ checker.check_toolchain_from_env(config, "sc-ld", "SC", "the swift linker")
+ checker.check_toolchain(config, "sc-ld", cross, "swiftc", "the swift linker")
+ checker.check_toolchain_from_env(config, "sc-sh", "SC", "the swift shared library linker")
+ checker.check_toolchain(config, "sc-sh", cross, "swiftc", "the swift shared library linker")
end
-- check it
diff --git a/xmake/platforms/iphoneos/load.lua b/xmake/platforms/iphoneos/load.lua
index c90fe4c13..16cee2652 100644
--- a/xmake/platforms/iphoneos/load.lua
+++ b/xmake/platforms/iphoneos/load.lua
@@ -35,59 +35,37 @@ function main()
_g.formats.shared = {"lib", ".dylib"}
_g.formats.symbol = {"", ".sym"}
- -- iphoneos or iphonesimulator?
+ -- init architecture
local arch = config.get("arch")
- if arch == "i386" or arch == "x86_64" then
+ local simulator = (arch == "i386" or arch == "x86_64")
- -- init flags for architecture
- local target_minver = config.get("target_minver")
- _g.cxflags = { "-arch " .. arch, "-mios-simulator-version-min=" .. target_minver }
- _g.mxflags = { "-arch " .. arch, "-mios-simulator-version-min=" .. target_minver }
- _g.asflags = { "-arch " .. arch, "-mios-simulator-version-min=" .. target_minver }
- _g.ldflags = { "-arch " .. arch, "-ObjC", "-lstdc++", "-fobjc-link-runtime", "-mios-simulator-version-min=" .. target_minver }
- _g.shflags = { "-arch " .. arch, "-ObjC", "-lstdc++", "-fobjc-link-runtime", "-mios-simulator-version-min=" .. target_minver }
- _g.ldflags = { "-arch " .. arch, "-Xlinker -objc_abi_version", "-Xlinker 2 -stdlib=libc++", "-Xlinker -no_implicit_dylibs", "-fobjc-link-runtime", "-mios-simulator-version-min=" .. target_minver }
- _g.shflags = { "-arch " .. arch, "-Xlinker -objc_abi_version", "-Xlinker 2 -stdlib=libc++", "-Xlinker -no_implicit_dylibs", "-fobjc-link-runtime", "-mios-simulator-version-min=" .. target_minver }
- _g.scflags = { format("-target %s-apple-ios%s", arch, target_minver) }
+ -- init platform name
+ local platname = ifelse(simulator, "iPhoneSimulator", "iPhoneOS")
- -- init flags for the xcode sdk directory
- local xcode_dir = config.get("xcode_dir")
- local xcode_sdkver = config.get("xcode_sdkver")
- local xcode_sdkdir = xcode_dir .. "/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator" .. xcode_sdkver .. ".sdk"
- insert(_g.cxflags, "-isysroot " .. xcode_sdkdir)
- insert(_g.asflags, "-isysroot " .. xcode_sdkdir)
- insert(_g.mxflags, "-isysroot " .. xcode_sdkdir)
- insert(_g.ldflags, "-isysroot " .. xcode_sdkdir)
- insert(_g.shflags, "-isysroot " .. xcode_sdkdir)
- insert(_g.scflags, "-sdk " .. xcode_sdkdir)
+ -- init target minimal version
+ local target_minver = config.get("target_minver")
+ local target_minver_flags = ifelse(simulator, "-mios-simulator-version-min=", "-miphoneos-version-min=") .. target_minver
- -- save swift link directory for tools
- config.set("__swift_linkdirs", xcode_dir .. "/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphonesimulator")
- else
+ -- init the xcode sdk directory
+ local xcode_dir = config.get("xcode_dir")
+ local xcode_sdkver = config.get("xcode_sdkver")
+ local xcode_sdkdir = format("%s/Contents/Developer/Platforms/%s.platform/Developer/SDKs/%s%s.sdk", xcode_dir, platname, platname, xcode_sdkver)
- -- init flags for architecture
- local target_minver = config.get("target_minver")
- _g.cxflags = { "-arch " .. arch, "-miphoneos-version-min=" .. target_minver }
- _g.mxflags = { "-arch " .. arch, "-miphoneos-version-min=" .. target_minver }
- _g.asflags = { "-arch " .. arch, "-miphoneos-version-min=" .. target_minver }
- _g.ldflags = { "-arch " .. arch, "-ObjC", "-lstdc++", "-fobjc-link-runtime", "-miphoneos-version-min=" .. target_minver }
- _g.shflags = { "-arch " .. arch, "-ObjC", "-lstdc++", "-fobjc-link-runtime", "-miphoneos-version-min=" .. target_minver }
- _g.scflags = { format("-target %s-apple-ios%s", arch, target_minver) }
+ -- init flags for c/c++
+ _g.cxflags = { "-arch " .. arch, target_minver_flags, "-isysroot " .. xcode_sdkdir }
+ _g.ldflags = { "-arch " .. arch, "-ObjC", "-lstdc++", "-fobjc-link-runtime", target_minver_flags, "-isysroot " .. xcode_sdkdir }
+ _g.shflags = { "-arch " .. arch, "-ObjC", "-lstdc++", "-fobjc-link-runtime", target_minver_flags, "-isysroot " .. xcode_sdkdir }
- -- init flags for the xcode sdk directory
- local xcode_dir = config.get("xcode_dir")
- local xcode_sdkver = config.get("xcode_sdkver")
- local xcode_sdkdir = xcode_dir .. "/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS" .. xcode_sdkver .. ".sdk"
- insert(_g.cxflags, "-isysroot " .. xcode_sdkdir)
- insert(_g.asflags, "-isysroot " .. xcode_sdkdir)
- insert(_g.mxflags, "-isysroot " .. xcode_sdkdir)
- insert(_g.ldflags, "-isysroot " .. xcode_sdkdir)
- insert(_g.shflags, "-isysroot " .. xcode_sdkdir)
- insert(_g.scflags, "-sdk " .. xcode_sdkdir)
+ -- init flags for objc/c++
+ _g.mxflags = { "-arch " .. arch, target_minver_flags, "-isysroot " .. xcode_sdkdir }
- -- save swift link directory for tools
- config.set("__swift_linkdirs", xcode_dir .. "/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos")
- end
+ -- init flags for asm
+ _g.asflags = { "-arch " .. arch, target_minver_flags, "-isysroot " .. xcode_sdkdir }
+
+ -- init flags for swift (with _g.ldflags and _g.shflags)
+ _g.scflags = { format("-target %s-apple-ios%s", arch, target_minver) , "-sdk " .. xcode_sdkdir }
+ _g["sc-shflags"] = { format("-target %s-apple-ios%s", arch, target_minver) , "-sdk " .. xcode_sdkdir }
+ _g["sc-ldflags"] = { format("-target %s-apple-ios%s", arch, target_minver) , "-sdk " .. xcode_sdkdir }
-- ok
return _g
diff --git a/xmake/platforms/macosx/load.lua b/xmake/platforms/macosx/load.lua
index 9cf0711b7..26104e086 100644
--- a/xmake/platforms/macosx/load.lua
+++ b/xmake/platforms/macosx/load.lua
@@ -55,10 +55,10 @@ function main()
-- init flags for asm (with _g.ldflags and _g.shflags)
_g.asflags = { "-arch " .. arch, "-isysroot " .. xcode_sdkdir }
- -- init flags for swift (with _g.ldflags and _g.shflags)
+ -- init flags for swift
_g.scflags = { format("-target %s-apple-macosx%s", arch, target_minver) , "-sdk " .. xcode_sdkdir }
- _g["sc-shflags"] = {}
- _g["sc-ldflags"] = {}
+ _g["sc-shflags"] = { format("-target %s-apple-macosx%s", arch, target_minver) , "-sdk " .. xcode_sdkdir }
+ _g["sc-ldflags"] = { format("-target %s-apple-macosx%s", arch, target_minver) , "-sdk " .. xcode_sdkdir }
-- init flags for golang
_g["go-ldflags"] = {}
diff --git a/xmake/platforms/watchos/check.lua b/xmake/platforms/watchos/check.lua
index d7271d8fe..9da3452ff 100644
--- a/xmake/platforms/watchos/check.lua
+++ b/xmake/platforms/watchos/check.lua
@@ -43,9 +43,15 @@ end
-- check the toolchains
function _check_toolchains(config)
- -- watchos or watchsimulator?
+ -- init architecture
local arch = config.get("arch")
- if arch == "i386" then
+ local simulator = (arch == "i386")
+
+ -- init cross
+ local cross = ifelse(simulator, "xcrun -sdk watchsimulator ", "xcrun -sdk watchos ")
+
+ -- watchos or watchsimulator?
+ if simulator then
checker.check_toolchain(config, "cc", "xcrun -sdk watchsimulator ", "clang", "the c compiler")
checker.check_toolchain(config, "cxx", "xcrun -sdk watchsimulator ", "clang", "the c++ compiler")
checker.check_toolchain(config, "cxx", "xcrun -sdk watchsimulator ", "clang++", "the c++ compiler")
@@ -59,7 +65,6 @@ function _check_toolchains(config)
checker.check_toolchain(config, "ex", "xcrun -sdk watchsimulator ", "ar", "the static library extractor")
checker.check_toolchain(config, "sh", "xcrun -sdk watchsimulator ", "clang++", "the shared library linker")
checker.check_toolchain(config, "sh", "xcrun -sdk watchsimulator ", "clang", "the shared library linker")
- checker.check_toolchain(config, "sc", "xcrun -sdk watchsimulator ", "swiftc", "the swift compiler")
else
checker.check_toolchain(config, "cc", "xcrun -sdk watchos ", "clang", "the c compiler")
checker.check_toolchain(config, "cxx", "xcrun -sdk watchos ", "clang", "the c++ compiler")
@@ -74,8 +79,15 @@ function _check_toolchains(config)
checker.check_toolchain(config, "ex", "xcrun -sdk watchos ", "ar", "the static library extractor")
checker.check_toolchain(config, "sh", "xcrun -sdk watchos ", "clang++", "the shared library linker")
checker.check_toolchain(config, "sh", "xcrun -sdk watchos ", "clang", "the shared library linker")
- checker.check_toolchain(config, "sc", "xcrun -sdk watchos ", "swiftc", "the swift compiler")
end
+
+ -- check for swift tools
+ checker.check_toolchain_from_env(config, "sc", "SC", "the swift compiler")
+ checker.check_toolchain(config, "sc", cross, "swiftc", "the swift compiler")
+ checker.check_toolchain_from_env(config, "sc-ld", "SC", "the swift linker")
+ checker.check_toolchain(config, "sc-ld", cross, "swiftc", "the swift linker")
+ checker.check_toolchain_from_env(config, "sc-sh", "SC", "the swift shared library linker")
+ checker.check_toolchain(config, "sc-sh", cross, "swiftc", "the swift shared library linker")
end
-- check it
diff --git a/xmake/platforms/watchos/load.lua b/xmake/platforms/watchos/load.lua
index 6ff99219e..7abdf2441 100644
--- a/xmake/platforms/watchos/load.lua
+++ b/xmake/platforms/watchos/load.lua
@@ -35,59 +35,37 @@ function main()
_g.formats.shared = {"lib", ".dylib"}
_g.formats.symbol = {"", ".sym"}
- -- watchos or watchsimulator?
+ -- init architecture
local arch = config.get("arch")
- if arch == "i386" then
+ local simulator = arch == "i386"
- -- init flags for architecture
- local target_minver = config.get("target_minver")
- _g.cxflags = { "-arch " .. arch, "-mwatchos-simulator-version-min=" .. target_minver }
- _g.mxflags = { "-arch " .. arch, "-mwatchos-simulator-version-min=" .. target_minver }
- _g.asflags = { "-arch " .. arch, "-mwatchos-simulator-version-min=" .. target_minver }
- _g.ldflags = { "-arch " .. arch, "-ObjC", "-lstdc++", "-fobjc-link-runtime", "-mwatchos-simulator-version-min=" .. target_minver }
- _g.shflags = { "-arch " .. arch, "-ObjC", "-lstdc++", "-fobjc-link-runtime", "-mwatchos-simulator-version-min=" .. target_minver }
- _g.ldflags = { "-arch " .. arch, "-Xlinker -objc_abi_version", "-Xlinker 2 -stdlib=libc++", "-Xlinker -no_implicit_dylibs", "-fobjc-link-runtime", "-mwatchos-simulator-version-min=" .. target_minver }
- _g.shflags = { "-arch " .. arch, "-Xlinker -objc_abi_version", "-Xlinker 2 -stdlib=libc++", "-Xlinker -no_implicit_dylibs", "-fobjc-link-runtime", "-mwatchos-simulator-version-min=" .. target_minver }
- _g.scflags = { format("-target %s-apple-ios%s", arch, target_minver) }
+ -- init platform name
+ local platname = ifelse(simulator, "WatchSimulator", "WatchOS")
- -- init flags for the xcode sdk directory
- local xcode_dir = config.get("xcode_dir")
- local xcode_sdkver = config.get("xcode_sdkver")
- local xcode_sdkdir = xcode_dir .. "/Contents/Developer/Platforms/WatchSimulator.platform/Developer/SDKs/WatchSimulator" .. xcode_sdkver .. ".sdk"
- insert(_g.cxflags, "-isysroot " .. xcode_sdkdir)
- insert(_g.asflags, "-isysroot " .. xcode_sdkdir)
- insert(_g.mxflags, "-isysroot " .. xcode_sdkdir)
- insert(_g.ldflags, "-isysroot " .. xcode_sdkdir)
- insert(_g.shflags, "-isysroot " .. xcode_sdkdir)
- insert(_g.scflags, "-sdk " .. xcode_sdkdir)
+ -- init target minimal version
+ local target_minver = config.get("target_minver")
+ local target_minver_flags = ifelse(simulator, "-mwatchos-simulator-version-min=", "-mwatchos-version-min=") .. target_minver
- -- save swift link directory for tools
- config.set("__swift_linkdirs", xcode_dir .. "/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/watchsimulator")
- else
+ -- init the xcode sdk directory
+ local xcode_dir = config.get("xcode_dir")
+ local xcode_sdkver = config.get("xcode_sdkver")
+ local xcode_sdkdir = format("%s/Contents/Developer/Platforms/%s.platform/Developer/SDKs/%s%s.sdk", xcode_dir, platname, platname, xcode_sdkver)
- -- init flags for architecture
- local target_minver = config.get("target_minver")
- _g.cxflags = { "-arch " .. arch, "-mwatchos-version-min=" .. target_minver }
- _g.mxflags = { "-arch " .. arch, "-mwatchos-version-min=" .. target_minver }
- _g.asflags = { "-arch " .. arch, "-mwatchos-version-min=" .. target_minver }
- _g.ldflags = { "-arch " .. arch, "-ObjC", "-lstdc++", "-fobjc-link-runtime", "-mwatchos-version-min=" .. target_minver }
- _g.shflags = { "-arch " .. arch, "-ObjC", "-lstdc++", "-fobjc-link-runtime", "-mwatchos-version-min=" .. target_minver }
- _g.scflags = { format("-target %s-apple-ios%s", arch, target_minver) }
+ -- init flags for c/c++
+ _g.cxflags = { "-arch " .. arch, target_minver_flags, "-isysroot " .. xcode_sdkdir }
+ _g.ldflags = { "-arch " .. arch, "-ObjC", "-lstdc++", "-fobjc-link-runtime", target_minver_flags, "-isysroot " .. xcode_sdkdir }
+ _g.shflags = { "-arch " .. arch, "-ObjC", "-lstdc++", "-fobjc-link-runtime", target_minver_flags, "-isysroot " .. xcode_sdkdir }
- -- init flags for the xcode sdk directory
- local xcode_dir = config.get("xcode_dir")
- local xcode_sdkver = config.get("xcode_sdkver")
- local xcode_sdkdir = xcode_dir .. "/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS" .. xcode_sdkver .. ".sdk"
- insert(_g.cxflags, "-isysroot " .. xcode_sdkdir)
- insert(_g.asflags, "-isysroot " .. xcode_sdkdir)
- insert(_g.mxflags, "-isysroot " .. xcode_sdkdir)
- insert(_g.ldflags, "-isysroot " .. xcode_sdkdir)
- insert(_g.shflags, "-isysroot " .. xcode_sdkdir)
- insert(_g.scflags, "-sdk " .. xcode_sdkdir)
+ -- init flags for objc/c++
+ _g.mxflags = { "-arch " .. arch, target_minver_flags, "-isysroot " .. xcode_sdkdir }
- -- save swift link directory for tools
- config.set("__swift_linkdirs", xcode_dir .. "/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/watchos")
- end
+ -- init flags for asm
+ _g.asflags = { "-arch " .. arch, target_minver_flags, "-isysroot " .. xcode_sdkdir }
+
+ -- init flags for swift (with _g.ldflags and _g.shflags)
+ _g.scflags = { format("-target %s-apple-ios%s", arch, target_minver) , "-sdk " .. xcode_sdkdir }
+ _g["sc-shflags"] = { format("-target %s-apple-ios%s", arch, target_minver) , "-sdk " .. xcode_sdkdir }
+ _g["sc-ldflags"] = { format("-target %s-apple-ios%s", arch, target_minver) , "-sdk " .. xcode_sdkdir }
-- ok
return _g