Document minimum clang/Xcode version on Mac OSX

Issue #29 resolved
Paul Hargrove created an issue

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)

  1. Paul Hargrove reporter

    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.

  2. Paul Hargrove 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
    
  3. Paul Hargrove reporter

    "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."

  4. Log in to comment