summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--waftools/checks/generic.py13
-rw-r--r--waftools/detections/compiler_swift.py10
2 files changed, 22 insertions, 1 deletions
diff --git a/waftools/checks/generic.py b/waftools/checks/generic.py
index 093c600f34..b83774d9b9 100644
--- a/waftools/checks/generic.py
+++ b/waftools/checks/generic.py
@@ -1,5 +1,6 @@
import os
import inflector
+from distutils.version import StrictVersion
from waflib.ConfigSet import ConfigSet
from waflib import Utils
@@ -8,7 +9,7 @@ __all__ = [
"check_pkg_config_cflags", "check_cc", "check_statement", "check_libs",
"check_headers", "compose_checks", "check_true", "any_version",
"load_fragment", "check_stub", "check_ctx_vars", "check_program",
- "check_pkg_config_datadir"]
+ "check_pkg_config_datadir", "check_macos_sdk"]
any_version = None
@@ -186,3 +187,13 @@ def load_fragment(fragment):
fragment_code = fp.read()
fp.close()
return fragment_code
+
+def check_macos_sdk(version):
+ def fn(ctx, dependency_identifier):
+ if ctx.env.MACOS_SDK_VERSION:
+ if StrictVersion(ctx.env.MACOS_SDK_VERSION) >= StrictVersion(version):
+ ctx.define(inflector.define_key(dependency_identifier), 1)
+ return True
+ return False
+
+ return fn
diff --git a/waftools/detections/compiler_swift.py b/waftools/detections/compiler_swift.py
index 4ff6d20119..d867a440d4 100644
--- a/waftools/detections/compiler_swift.py
+++ b/waftools/detections/compiler_swift.py
@@ -1,4 +1,5 @@
import re
+import string
import os.path
from waflib import Utils
from distutils.version import StrictVersion
@@ -116,9 +117,18 @@ def __find_swift_library(ctx):
def __find_macos_sdk(ctx):
ctx.start_msg('Checking for macOS SDK')
sdk = __run(['xcrun', '--sdk', 'macosx', '--show-sdk-path'])
+ sdk_build_version = __run(['xcrun', '--sdk', 'macosx', '--show-sdk-build-version' ])
+
if sdk:
ctx.end_msg(sdk)
ctx.env.MACOS_SDK = sdk
+
+ if sdk_build_version:
+ verRe = re.compile("(\d+)(\D+)(\d+)")
+ version_parts = verRe.search(sdk_build_version)
+ major = int(version_parts.group(1))-4
+ minor = string.ascii_lowercase.index(version_parts.group(2).lower())
+ ctx.env.MACOS_SDK_VERSION = '10.' + str(major) + '.' + str(minor)
else:
ctx.end_msg(False)