De-universalizing hotspot in jdk8u

Erik Joelsson erik.joelsson at oracle.com
Mon Jan 12 10:41:20 UTC 2015


On 2015-01-12 00:02, David Holmes wrote:
> Hi David,
>
> On 10/01/2015 2:00 AM, David DeHaven wrote:
>>
>> 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
>>      HOTSPOT_TARGET=universal_${HOTSPOT_EXPORT}
>>    fi
>>
>>
>> So.. I turned it off:
>>    if test "x$OPENJDK_TARGET_OS" = "xmacosx"; then
>> #    MACOSX_UNIVERSAL="true"
>>      MACOSX_UNIVERSAL="false"
>>    fi
>>
>> 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
>>    ifneq ($(ALT_MACOSX_UNIVERSAL),)
>>
>> 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").
>
> The hotspot makefiles still haven't been rewritten (though Magnus had 
> been working on it).
>
> Also I was under the impression that we used the universal stuff 
> because we had to deliver in a particular way on OSX. But I don't know 
> the details and the people who dealt with the original OSX port effort 
> are no longer here.
>
I don't know why Hotspot is packaged as a universal binary. In the jdk, 
only libJObjC was built as a universal binary and that lib was removed 
before JDK 8 shipped. What part of Macosx would need to interact 
directly with libjvm.dylib in a way that required a (fake) universal 
format, but no other libs in the jdk? I would say go ahead and change it.

/Erik

> David H.
>
>>
>> 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.
>>
>> -DrD-
>>




More information about the build-dev mailing list