MacOS build tool selections for JDK8

David DeHaven david.dehaven at oracle.com
Mon May 13 15:59:57 UTC 2013


Clang emulates gcc (even so far as identifying itself as GCC for source level compatibility), they use the same command line arguments. Internally, clang has a somewhat better optimizer than gcc and feedback to the developer (warnings, error, etc..) is generally more useful than gcc. They both feed llvm so the backend is the same in either case. Apple seems to have a bigger investment in pushing clang forward than gcc, which generally means it has more of a future (there's never a guarantee though). I've been developing Mac OS X software since before the release of 10.0 and quite frankly the underlying tools haven't changed *that* much, the notable exception being when they dropped jam as the project tool. Windows has undergone far greater changes in that same time period..

If it were my choice, Mac OS X 10.8 would be the base OS with Xcode 4.6.1 (current) with clang as the officially supported compiler and with an option to use gcc. I don't see why that would't last at least the public lifecycle of JDK8. What I would be more concerned with is the apparent drift from what we know as Mac OS X towards something more iOS-like, that could mean libraries and frameworks we depend on no longer being available, but at that point it wouldn't be the same OS and we'd have to re-evaluate anyways. Sort of like what's happening with Windows 8 right now.

-DrD-

> One reason to use gcc instead of clang would be to have one less difference between platforms. It's always annoying when different compilers have a different set of warnings (even if the warnings are correct and useful) and you try to get something to compile on all platforms.
> 
> I don't know if there is any performance difference between the two - either in compile time or runtime performance of the generated code.
> 
> /Staffan
> 
> On 11 maj 2013, at 00:16, Tim Bell <tim.bell at oracle.com> wrote:
> 
>> All-
>> 
>> The question of what toolchain to use on MacOS when building JDK8 is in play.
>> 
>> This is important because the decisions we make in the next few weeks will be in place for the lifetime of JDK8, including all future JDK8 update releases.
>> 
>> I have a few different pieces of feedback at this point, and (due to my own ignorance of the developer environment choices on MacOS), I'd like to throw the discussion out to a larger audience of MacOS developers.
>> 
>> 1) Use gcc as the build does today.
>> 
>> 2) Use Clang.
>> 
>> 3) Support both (since they should both compile the same source) but identify Clang as the official tool.
>> 
>> 4) Use Xcode (er - wait - isn't Clang a part of Xcode?  Please correct me if I am mistaken here....)
>> 
>> 
>> As part of the build-infrastructure team, my #1 concern is getting solid, repeatable builds from the toolchain, every time, that that's what I mean by 'official'.
>> 
>> If developers feel adventurous and want to run out ahead using bleeding edge tools, good for them - have fun.
>> 
>> What we would like to define here is a solid baseline of what we use to run the official from-scratch JDK8 builds.  That said, I'd like to nail down the tools used, and the specific version of the tools.
>> 
>> Thanks in advance for any feedback.
>> 
>> Tim Bell
>> Java Platform Group Infrastructure
>> 
> 




More information about the build-dev mailing list