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

Magnus Ihse Bursie magnus.ihse.bursie at oracle.com
Fri Dec 11 22:24:09 UTC 2015


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