Xcode: Update default Swift language version for Xcode 10.2

Xcode 10.2 no longer supports Swift language versions before 4.0.

Fixes: #18871
This commit is contained in:
Brad King
2019-02-04 12:05:08 -05:00
parent 6e91f5d620
commit 96dece6dc1
4 changed files with 13 additions and 3 deletions

View File

@@ -1,5 +1,9 @@
CMAKE_Swift_LANGUAGE_VERSION
----------------------------
Set to the Swift language version number. If not set, the legacy "2.3"
version is assumed.
Set to the Swift language version number. If not set, the oldest legacy
version known to be available in the host Xcode version is assumed:
* Swift ``4.0`` for Xcode 10.2 and above.
* Swift ``3.0`` for Xcode 8.3 and above.
* Swift ``2.3`` for Xcode 8.2 and below.

View File

@@ -332,6 +332,8 @@ Id flags: ${testflags} ${CMAKE_${lang}_COMPILER_ID_FLAGS_ALWAYS}
if("${lang}" STREQUAL "Swift")
if(CMAKE_Swift_LANGUAGE_VERSION)
set(id_lang_version "SWIFT_VERSION = ${CMAKE_Swift_LANGUAGE_VERSION};")
elseif(XCODE_VERSION VERSION_GREATER_EQUAL 10.2)
set(id_lang_version "SWIFT_VERSION = 4.0;")
elseif(XCODE_VERSION VERSION_GREATER_EQUAL 8.3)
set(id_lang_version "SWIFT_VERSION = 3.0;")
else()

View File

@@ -3142,6 +3142,8 @@ bool cmGlobalXCodeGenerator::CreateXCodeObjects(
if (const char* vers = this->CurrentMakefile->GetDefinition(
"CMAKE_Swift_LANGUAGE_VERSION")) {
swiftVersion = vers;
} else if (this->XcodeVersion >= 102) {
swiftVersion = "4.0";
} else if (this->XcodeVersion >= 83) {
swiftVersion = "3.0";
} else {

View File

@@ -1,7 +1,9 @@
cmake_minimum_required(VERSION 3.3)
project(SwiftOnly Swift)
if(NOT XCODE_VERSION VERSION_LESS 8.0)
if(NOT XCODE_VERSION VERSION_LESS 10.2)
set(CMAKE_Swift_LANGUAGE_VERSION 5.0)
elseif(NOT XCODE_VERSION VERSION_LESS 8.0)
set(CMAKE_Swift_LANGUAGE_VERSION 3.0)
endif()