De-universalizing hotspot in jdk8u
david.dehaven at oracle.com
Fri Jan 9 16:00:50 UTC 2015
We have this nice little comment in common/autoconf/jdk-options.m4:
# On Macosx universal binaries are produced, but they only contain
# 64 bit intel. This invalidates control of which jvms are built
# from configure, but only server is valid anyway. Fix this
# when hotspot makefiles are rewritten.
if test "x$MACOSX_UNIVERSAL" = xtrue; then
So.. I turned it off:
if test "x$OPENJDK_TARGET_OS" = "xmacosx"; then
And in hotspot/make/bsd/makefiles/defs.make:
# Universal build settings
ifeq ($(OS_VENDOR), Darwin)
# Build universal binaries by default on Mac OS X
# MACOSX_UNIVERSAL = true
MACOSX_UNIVERSAL = false
hotspot still seems to build happily (I'm kicking off tests now). Is there are particular reason this hasn't been done yet? I'd like to know before I pursue this as a means of eliminating our dependency on lipo which is causing an inordinate amount of grief when trying to build on 10.9 and later when Xcode 5+ is coinstalled. I have some logic to work around using the broken /usr/bin/lipo, but it doesn't help later in some "other" build target that ends up using '-arch i386 -arch x86_64'. It does not explicitly run lipo, it relies on gcc to do the fattening itself and so it fails even though I've gone to the effort of working around the broken lipo (and it isn't necessary anyways because it doesn't even build the i386 binaries even though it's supposed to be "universal").
Quite frankly I'd rather just remove all the universal binary stuff from hotspot, but I'm trying my best to minimize the changes there... the "other" problem I can handle easily.
More information about the build-dev