RFR: 7200065 Cross-compilation changes to support the new-build

David Holmes david.holmes at oracle.com
Sun Sep 23 19:15:37 PDT 2012

On 24/09/2012 7:55 AM, David Holmes wrote:
> On 23/09/2012 3:44 AM, Fredrik Öhrström wrote:
>> The variable HOST.COMPILE.CXX points to the compiler used to create a
>> binary that can be
>> run on the build platform. But for unknown reasons it contains the
>> standard CFLAGS and CXXFLAGS, which are used to create the binary for
>> the platform where the jvm is going to be executed.
> I'll have to look more closely at this because that is certainly not the
> case for real cross-compilation builds in the existing build. If it were
> the case then there is a lot more than just ARCHFLAG that would cause
> the host gcc to spit the dummy.

Okay, so it won't come as much of a surprise to most people that this is 
a bit of a mess.

Bottom line: Fredrik's fix is necessary in the general case.

Longer explanation ... ARCHFLAG nominally defines gcc flags for the 
target architecture and so, as Fredrik stated, these would cause build 
failures when running adlc because those same flags are getting appended 
to the flags used by adlc (which is itself wrong but a bigger problem to 
solve). This is mitigated by the fact that for our true 
cross-compilation builds we don't use ARCHFLAG to set these kinds of 
things but use EXTRA_CFLAGS. We also don't build C2 for all 
architectures hence some of the ARCHFLAGS that would cause a problem, 
don't today because adlc never gets built. So this change is presently 
only being exercised for 32-bit-on-64-bit "cross compilation" where the 
effect of not having the fix is harmless (adlc is built as a 32-bit binary).


> Thanks,
> David
>> Most of these flags do not hurt the compile for the build platform
>> (though perhaps they are unnecessary) except the ARCHFLAG, which if not
>> removed, will cross compile the adlc tool.
>> //Fredrik
>> Den fredagen den 21:e september 2012 skrev Kelly O'Hair:
>> What bothers me on this adlc.make change is that there is no comment
>> in the Makefile as to why ARCHFLAG is filtered out
>> of the options. Why is this necessary?
>> The defs.make file changes look fine.
>> -kto
>> On Sep 20, 2012, at 11:40 PM, David Holmes wrote:
>> > webrev:
>> >
>> > http://cr.openjdk.java.net/~dholmes/7200065/webrev/
>> >
>> > These are Fredrik's contributions from build-infra being moved to
>> mainline (to join the changes Kelly pushed the other day). There is
>> a slight change to Fredrik's original changeset due to a bug with
>> the old build (PATH_SEP wouldn't get set) - and it's simpler to use
>> ?:= than ifdef.
>> >
>> > I'm acting as one reviewer but would welcome other eyes.
>> >
>> > Thanks,
>> > David

More information about the hotspot-dev mailing list