[jdk17] RFR: 8268643: SVML lib shouldn't be generated when C2 is absent
erik.joelsson at oracle.com
erik.joelsson at oracle.com
Mon Jun 14 13:31:32 UTC 2021
On 2021-06-14 06:13, Jie Fu wrote:
> On Mon, 14 Jun 2021 12:54:33 GMT, Erik Joelsson <erikj at openjdk.org> wrote:
>
>>> Hi all,
>>>
>>> SVML lib shouldn't be generated when C2 is absent.
>>> This is because it is only used by C2.
>>>
>>> Thanks.
>>> Best regards,
>>> Jie
>> make/autoconf/jvm-features.m4 line 571:
>>
>>> 569: ENABLE_CDS="true"
>>> 570: INCLUDE_JVMCI="true"
>>> 571: INCLUDE_COMPILER2="true"
>> I would recommend inverting this logic so that it works properly in the (unlikely) even that two or more JVM variants are built into the same JDK. I assume we want this library built if any JVM variant has c2.
> Thanks @erikj79 for your review.
>
> What do you mean by `two or more JVM variants are built into the same JDK` ?
> Did you mean two different JVM variants can be built into just one JDK images?
Yes, there is still support for building multiple variants into the same
image even though this is not something we currently do for any Oracle
offering. But as long as the build supports it, we should try to keep it
working. In this case your new variable should be true if any variant
that is being built has the compiler2 feature. The current proposal will
skip building the library if any variant does not contain the compiler2
feature. If you initiate the variable to false and change it to true if
a variant has compiler2, we are set.
> As you suggested, I used to try to use `$(call check-jvm-feature, compiler2)` like this
>
> diff --git a/make/modules/jdk.incubator.vector/Lib.gmk b/make/modules/jdk.incubator.vector/Lib.gmk
> index 2626065..a176b9a 100644
> --- a/make/modules/jdk.incubator.vector/Lib.gmk
> +++ b/make/modules/jdk.incubator.vector/Lib.gmk
> @@ -27,7 +27,7 @@ include LibCommon.gmk
>
> ################################################################################
>
> -ifeq ($(call isTargetOs, linux windows)+$(call isTargetCpu, x86_64), true+true)
> +ifeq ($(call isTargetOs, linux windows)+$(call isTargetCpu, x86_64)+$(call check-jvm-feature, compiler2), true+true+true)
> $(eval $(call SetupJdkLibrary, BUILD_LIBSVML, \
> NAME := svml, \
> CFLAGS := $(CFLAGS_JDKLIB), \
>
> But it doesn't work.
> Am I missing something?
I deleted that comment because it was wrong. The check-jvm-feature macro
only works in the hotspot part of the build where the JVM_VARIANT
variable is set. Those makefiles are called for each JVM_VARIANT being
built.
/Erik
More information about the build-dev
mailing list