Xcode: allow requesting Xcode/CLT SDKs specifically

This commit is contained in:
Misty De Meo 2018-07-26 17:57:11 -07:00
parent 4f8a751579
commit 5765dac86c
No known key found for this signature in database
GPG Key ID: 76CF846A2F674B2C
3 changed files with 47 additions and 11 deletions

View File

@ -91,17 +91,7 @@ module OS
CLTSDKLocator.new
end
begin
sdk = if v.nil?
(Xcode.version.to_i >= 7) ? @locator.latest_sdk : @locator.sdk_for(version)
else
@locator.sdk_for v
end
rescue BaseSDKLocator::NoSDKError
sdk = @locator.latest_sdk
end
# Only return an SDK older than the OS version if it was specifically requested
sdk if v || (!sdk.nil? && sdk.version >= version)
@locator.sdk_if_applicable(v)
end
# Returns the path to an SDK or nil, following the rules set by #sdk.

View File

@ -28,8 +28,26 @@ module OS
SDK.new v, path
end
def sdk_if_applicable(v = nil)
begin
sdk = if v.nil?
(source_version.to_i >= 7) ? latest_sdk : sdk_for(OS::Mac.version)
else
sdk_for v
end
rescue BaseSDKLocator::NoSDKError
sdk = latest_sdk
end
# Only return an SDK older than the OS version if it was specifically requested
sdk if v || (!sdk.nil? && sdk.version >= OS::Mac.version)
end
private
def source_version
OS::Mac::Version::NULL
end
def sdk_prefix
""
end
@ -56,6 +74,10 @@ module OS
class XcodeSDKLocator < BaseSDKLocator
private
def source_version
OS::Mac::Xcode.version
end
def sdk_prefix
@sdk_prefix ||= begin
# Xcode.prefix is pretty smart, so let's look inside to find the sdk
@ -73,6 +95,10 @@ module OS
class CLTSDKLocator < BaseSDKLocator
private
def source_version
OS::Mac::CLT.version
end
# While CLT SDKs existed prior to Xcode 10, those packages also
# installed a traditional Unix-style header layout and we prefer
# using that

View File

@ -96,6 +96,16 @@ module OS
!prefix.nil?
end
def sdk(v = nil)
@locator ||= XcodeSDKLocator.new
@locator.sdk_if_applicable(v)
end
def sdk_path(v = nil)
sdk(v)&.path
end
def update_instructions
if MacOS.version >= "10.9" && !OS::Mac.prerelease?
<<~EOS
@ -226,6 +236,16 @@ module OS
end
end
def sdk(v = nil)
@locator ||= CLTSDKLocator.new
@locator.sdk_if_applicable(v)
end
def sdk_path(v = nil)
sdk(v)&.path
end
def update_instructions
if MacOS.version >= "10.9"
<<~EOS