diff options
| author | ruki <[email protected]> | 2017-02-22 20:56:56 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2017-02-22 20:56:56 +0800 |
| commit | 28519b50187de9a1f69900c8ab58c73e3a54707c (patch) | |
| tree | 4f5683ebca72e6385f7f3c2b546746bce928b896 | |
| parent | 07090c9dcd4c9deb42b2f8aa47072a9f8c518d85 (diff) | |
fix run format issues and improve to load swift flags
| -rw-r--r-- | xmake/core/sandbox/modules/string.lua | 7 | ||||
| -rw-r--r-- | xmake/platforms/iphoneos/check.lua | 20 | ||||
| -rw-r--r-- | xmake/platforms/iphoneos/load.lua | 70 | ||||
| -rw-r--r-- | xmake/platforms/macosx/load.lua | 6 | ||||
| -rw-r--r-- | xmake/platforms/watchos/check.lua | 20 | ||||
| -rw-r--r-- | xmake/platforms/watchos/load.lua | 70 |
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 |
