On Fri, 1 Nov 2024 15:30:14 GMT, Magnus Ihse Bursie <i...@openjdk.org> wrote:

>> Please review this PR that fixes JDK build configure failure when using 
>> clang after JDK-8338304:
>> 
>> 
>> Found candidate GCC installation: <snip>
>> Selected GCC installation: <snip>
>> ...
>> clang: error: unsupported option '-V -static-libgcc'
>> configure:85215: $? = 1
>> configure:85204: <snip> -qversion >&5
>> clang: error: unknown argument '-qversion'; did you mean '--version'?
>> ...
>> 
>> 
>> Tool from Clang GCC installation is being picked up unexpectedly (JDK build 
>> configured with `--with-toolchain-type=clang`). With this fix, it avoids 
>> `UTIL_REQUIRE_PROGS(LLD, lld)` if user supplies compiler toolchain. The user 
>> supplied compiler toolchain is used by setting 
>> `CXX=<user_specified_path_to_tools_script>` during configuration.
>
> make/autoconf/toolchain.m4 line 448:
> 
>> 446:       fi
>> 447:     fi
>> 448:     USE_USER_SUPPLIED_COMPILER=true
> 
> This code is called for both CC and CXX. So if you run like `configure 
> CC=foo` (but not with `CXX=bar` at the same time), the value of this variable 
> will be determined by which check happens to be run first by configure.

The solution to this conundrum is not trivial. You could use a 
`$1_IS_USER_SUPPLIED` instead, but then you need to determine what to do with 
the `lld` check. Maybe you should skip it if either of `CC_IS_USER_SUPPLIED` or 
`CXX_IS_USER_SUPPLIED` is true; or only if both.

I guess it is unlikely that anyone runs with such a combination, but it is 
possible and (technically sort-of) supported.

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/21817#discussion_r1825961901

Reply via email to