RFR: JDK-8142907 Integration of minor fixes from the build-infra project

Erik Joelsson erik.joelsson at oracle.com
Mon Dec 14 08:40:47 UTC 2015


Looks good to me.

/Erik

On 2015-12-11 23:24, Magnus Ihse Bursie wrote:
> On 2015-12-11 22:43, Magnus Ihse Bursie wrote:
>> Hi David,
>>
>> Resurrecting the second part of the build-infra integrations. :) 
>> Fortunately, no major code changes in the meantime has affected this 
>> patch. (I did need to update the new 
>> hotspot/make/lib/Lib-jdk.hotspot.agent.gmk though.)
>
> It seems I forgot to include the link to the new webrev:
>
> http://cr.openjdk.java.net/~ihse/JDK-8142907-build-infra-integration-closed/webrev.05 
>
>
> /Magnus
>
>>
>>
>> On 2015-11-16 05:33, David Holmes wrote:
>>> Hi Magnus,
>>>
>>> I had a flick through most of the files. Overall seems okay but I 
>>> have a few queries below.
>>
>> Replies inline.
>>
>>>
>>> On 13/11/2015 12:43 PM, Magnus Ihse Bursie wrote:
>>>> The build-infra project has collected a number of minor fixes and
>>>> changes during the new hotspot build development. It's a mix of 
>>>> code
>>>> cleanup and new capabilities.
>>>>
>>>> Not all of these new features are immediately beneficial to the 
>>>> JDK, but
>>>> they will be needed for the upcoming new Hotspot build, and it will 
>>>> not
>>>> hurt to have them in mainline. (In fact, it will tremendously help
>>>> merging between mainline and build-infra.)
>>>>
>>>> The fix addresses these issues:
>>>>
>>>> In general:
>>>> * Break out hotspot configuration into hotspot.m4
>>>> * Long link lines uses @-files
>>>> * Consistently use -Wl instead of -Xlinker
>>>> * Improve clang on linux compilation
>>>> * Set shared library name explicitely on solaris
>>>> * Set correct shared library flag on Windows (-dll)
>>>> * Consistency fixes for build toolchain
>>>> * Bring compare script up to date
>>>> * General code/whitespace cleanup
>>>> * Additional functionality in MakeBase
>>>>
>>>> In NativeCompilation.gmk:
>>>> * More efficient vardeps for per-file CFLAGS
>>>> * Fewer shell executions (means better performance on Windows)
>>>> * EXCLUDE_PATTERN and EXTRA_OBJECT_FILES
>>>> * Debug symbols on macosx (disabled for existing code to keep current
>>>> behavior)
>>>>
>>>> Enabling debug info on macosx on existing jdk should be treated in a
>>>> follow-up bug.
>>>> Bug: https://bugs.openjdk.java.net/browse/JDK-8142907
>>>> WebRev:
>>>> http://cr.openjdk.java.net/~ihse/JDK-8142907-build-infra-integration-closed/webrev.01 
>>>>
>>>>
>>>>
>>>> (It turned out that WebRev could not at the same time include files 
>>>> from
>>>> multiple repos and track the history of a "hg cp":ied file. So I 
>>>> created
>>>> an alternative revision here:
>>>> http://cr.openjdk.java.net/~ihse/JDK-8142907-build-infra-integration-closed/webrev.02/ 
>>>>
>>>>
>>>>
>>>> It does not include the jdk files, but hotspot.m4 might be easier to
>>>> understand)
>>>
>>> flags.m4:
>>>
>>>   60   AC_SUBST(LEGACY_EXTRA_CFLAGS)
>>>   61   AC_SUBST(LEGACY_EXTRA_CXXFLAGS)
>>>   62   AC_SUBST(LEGACY_EXTRA_LDFLAGS)
>>>   63
>>>   64   AC_SUBST(EXTRA_CFLAGS)
>>>   65   AC_SUBST(EXTRA_CXXFLAGS)
>>>   66   AC_SUBST(EXTRA_LDFLAGS)
>>>
>>> IIRC we added the legacy flags purely to pass the cross-compilation 
>>> args through to hotspot. Not sure why we need both legacy and 
>>> non-legancy variants now ??
>>
>> This is part of an ongoing effort to split CFLAGS_JDK into more 
>> reasonable parts. The current model is that we throw all possible 
>> flags together in CFLAGS_JDK (and then further on to CFLAGS_JDKLIB et 
>> al). While it was questionable even before, it did work when we only 
>> built the JDK native libraries. Now that we need to build libjvm.so 
>> as well, which has (for historical reason) a set of flags that are 
>> both partially the same and partially different, this is not so good.
>>
>> We would like to see a change to a situation where the different 
>> "parts" that we build CFLAGS_JDK from would be handled separately, 
>> and then combined as needed for JDK libraries, and for Hotspot. So, 
>> currently we use EXTRA_CFLAGS just to add them to CFLAGS_JDK, and 
>> then drop them. In the new Hotspot build, we use the EXTRA_CFLAGS to 
>> add them to the Hotspot flags. Of course, we could have used 
>> LEGACY_EXTRA_CFLAGS, but we'd like to avoid using "LEGACY" for new 
>> stuff.
>>
>> With that being said, I now realize that maybe this change will not 
>> be needed anyway, at least not right now. Since doing a proper flag 
>> cleanup is a major task, we decided to copy the CFLAGS_JDK behavior 
>> for Hotspot flags as well in the current implementation of the new 
>> hotspot build, and saving the cleanup for another day (so it will not 
>> block the new build system). So I'll revert this part of the change 
>> for now.
>>
>>> On Windows -LD is a superset of -dll, so it isn't obvious the change 
>>> is correct.
>> I hope Erik's reply to that was satisfactory.
>>>
>>> ---
>>>
>>> jdk/make/lib/LibCommon.gmk
>>>
>>> + # Disable it here for the jdk binaries until we decide to enable 
>>> them.
>>>
>>> s/binaries/libraries/ ?
>> Sure, I'll fix.
>>
>>> Actually both this fragment and the one in 
>>> jdk/make/launcher/LauncherCommon.gmk I find confusing - what is the 
>>> relation with hotspot here, and the role of SetupNativeCompilation?
>> I hope Erik's reply to that is acceptable as well. As for the other 
>> changes in the jdk repo, most of them is to either standardize on 
>> -Wl, or to fix some places were we didn't do a proper $$ (instead of 
>> $) in an macro that was supposed to be eval'd. (This was incorrect 
>> before as well, but it broke the build when the LDFLAGS started 
>> having commas in them.)
>>
>> /Magnus
>>
>>>
>>> Thanks,
>>> David
>>>
>>>
>>>> /Magnus
>>
>




More information about the build-dev mailing list