Document minimum clang/Xcode version on Mac OSX
We need to document minimum requirements for our major target platforms.
This issue is to address Apple's Xcode.
Based on my testing so far (details below) I believe we can support Mac OS X with clang/clang++ compilers (masquerading as gcc/g++) with version Apple LLVM version 8.0.0
or newer.
I cannot definitively state what Xcode releases that corresponds to.
An alternative formulation:
The most recent releases of Xcode for Mac OS X 10.12/Sierra and 10.11/El Capitan work, while the most recent release for 10.10/Yosemite does not.
Based on automated CI testing, I am confident that the following works:
sierra:~ phargrov$ sw_vers
ProductName: Mac OS X
ProductVersion: 10.12.6
BuildVersion: 16G29
sierra:~ phargrov$ xcodebuild -version
Xcode 8.3.3
Build version 8E3004b
sierra:~ phargrov$ c++ --version
Apple LLVM version 8.1.0 (clang-802.0.42)
Target: x86_64-apple-darwin16.7.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
This is Mac OS X Sierra (Apple's current release) with Xcode updates as far as the App Store will go (in particular not testing the Xcode 9 beta).
Based on my ability to compile everything in test/
I suspect the following works:
el-capitan:~ phargrov$ sw_vers
ProductName: Mac OS X
ProductVersion: 10.11.6
BuildVersion: 15G1611
el-capitan:~ phargrov$ xcodebuild -version
Xcode 8.2.1
Build version 8C1002
el-capitan:~ phargrov$ c++ --version
Apple LLVM version 8.0.0 (clang-800.0.42.1)
Target: x86_64-apple-darwin15.6.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
This Max OS X El Capitan (Apple's current-minus-1 release) with the latest compatible Xcode release.
Meanwhile, on Mac OS X Yosemite (current-minus-2) the latest compatible Xcode is 7.1 which does not appear to work:
/Users/phhargrove/upcxx/src/future/core.cpp:28:3: error: thread-local storage is not supported for the current target
thread_local future_header_dependent **active_tail_ = nullptr;
^
Full details:
iclimb:upcxx phhargrove$ sw_vers
ProductName: Mac OS X
ProductVersion: 10.10.5
BuildVersion: 14F2511
iclimb:upcxx phhargrove$ xcodebuild -version
Xcode 7.1
Build version 7B91b
iclimb:upcxx phhargrove$ c++ --version
Apple LLVM version 7.0.0 (clang-700.1.76)
Target: x86_64-apple-darwin14.5.0
Thread model: posix
Comments (3)
-
reporter -
reporter This table may be of interest.
I indicates that the failing `Apple LLVM version 7.0.0 (clang-700.1.76) is based on (non-Apple) LLVM 3.7.0.
This is interesting because 3.7.0 was the minimum version found to work on Linux (provided a recent libstdc++).So, it seems that the real issue on Yosemite (the "thread-local storage not supported ..." message) is most likely not a function of the clang front-end, but rather of some other part of the tool chain.
It is worth noting that Apple will EOL Yosemite as soon as High Sierra reaches final release, which is expected "Fall 2017" (as in "real soon now"). So, having no support there is not a problem.
At the other end of the spectrum, below are the specs for my Mac OS X 11.13 BETA-9 (High Sierra) system with Xcode 9 Beta. And, yes, upcxx works there too.
high-sierra:~ phargrov$ sw_vers ProductName: Mac OS X ProductVersion: 10.13 BuildVersion: 17A360a high-sierra:~ phargrov$ xcodebuild -version Xcode 9.0 Build version 9M202q high-sierra:~ phargrov$ c++ --version Apple LLVM version 9.0.0 (clang-900.0.34.1) Target: x86_64-apple-darwin17.0.0 Thread model: posix InstalledDir: /Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
-
reporter - changed status to resolved
"Successfully tested with the most recent available Xcode releases on Mac OS X versions 10.11, 10.12 and 10.13beta (El Capitan, Sierra and High Sierra, respectively). Suspect any Xcode version 8.0 or newer will work."
- Log in to comment
I've added testing of upcxx on the Mac OS X 10.11 (El Capitan) system to our nightly CI.
Results are all positive.
So I'm upgrading
Apple LLVM version 8.0.0
from "suspect to work" to "confident it works"Not sure who is responsible for documenting this, but I've completed the "leg work" portion.