I meant in toolchain.m4, which allows gcc for macOS

best regards,
Julian

On Sat, Mar 12, 2022 at 4:32 AM Magnus Ihse Bursie <
magnus.ihse.bur...@oracle.com> wrote:

> On 2022-03-11 20:02, Julian Waters wrote:
>
> I understand the concerns, seems like I grossly underestimated the
> complexity such a task would entail. Though I would say the following can
> only really be known if it's already been implemented:
>
>         Most likely there will be strange bugs with anything that requires
> OS interaction (like dll loading and whatsnot)
>
> To my knowledge the versions of said compilers that link against the
> universal CRT utilize exactly the same Windows APIs (And corresponding
> dlls) for OS related stuff that Visual C++ itself uses (Minus vcruntime,
> which is specific to MSVC), without any POSIX compatibility layers on top.
> I've tried rewiring the build system incrementally in the meantime on my
> end to see what areas would be of interest and it's now failing when
> hitting POSIX specific includes during make, hinting that (At least for
> gcc) compatibility has been traded for full native support for Windows APIs
> within the compiler, which may mitigate any issues slightly (That's also
> why I suggested initially to only allow for versions that link against the
> ucrt without any compatibility layers- Cygwin's toolchains which link
> against newlib and old MinGW binaries which link against msvcrt would just
> be an unnecessary headache). That said, whether aforementioned bugs will
> actually surface should the attempt be successful I don't really know yet
>
>         Actually, I would seriously assume that any other compiler than VS
> on Windows will give much worse results.
>         The VS compiler is battle-hardened. gcc and clang are only used by
> a very small enthusiastic hobbyist minority.
>
> The Windows ports of both compilers do keep the same optimizations and
> code generation quality as they do on other platforms from what I know
> though, it's mainly the linkers that have been modified to generate the PE
> format instead of the ELF on Linux. I digress, I don't have any results to
> show for this yet
>
> I'm not sure I get the part about macOS strictly mapping to clang. Isn't
> there the option to swap to using gcc for macOS?
>
> No, Apple removed that option years ago.
>
> /Magnus
>
>
> best regards,
> Julian
>
> On Sat, Mar 12, 2022 at 1:50 AM Magnus Ihse Bursie <
> magnus.ihse.bur...@oracle.com> wrote:
>
>>
>>
>> On 2022-03-11 14:34, Julian Waters wrote:
>>
>> Darn, seems like it'll be much harder than I expected. Since multiple
>> toolchains are supported for macOS and Linux, I assumed a slight patch
>> would help get it to work on Windows. Looking through the stuff in make
>> though, it appears a lot of the build system implicitly expects the
>> compiler for Windows to always be Visual C++, which doesn't really help
>> that much (Though the fact that we can exclude many versions of gcc, such
>> as Cygwin's and old MinGW binaries helps a lot). The build process for the
>> newer Windows ports of gcc are surprisingly similar to Visual C++ though
>> (Eg rc can be swapped out for windres) so this might hopefully be something
>> I can try exploring in the future (Gonna look a bit harder at make and
>> write what I can find back to this mailing list in the meantime). It'd be
>> interesting if benchmarks of the JVM compiled with different compilers on
>> Windows can be compared side by side on the off chance this becomes a
>> reality though
>>
>>
>> In theory OS and compiler toolchain are separate things. In practice, in
>> the JDK, they are not. There is basically a 1-to-1 mapping between
>> toolchain and OS:
>> Windows <-> Visual Studio
>> macOS <-> XCode/clang
>> linux <-> gcc
>>
>> (The one possible exception is that clang on linux is probably feasible.)
>>
>> After years and years on this, all kinds of assumptions has been
>> hard-coded, even if people try to do the right thing. But sometimes it is
>> not clear if you are checking for toolchain or os; perhaps when linking
>> with a specific library, or setting some define.
>>
>> Any attempt to change this is, as I said, a *huge* undertaking. *And*
>> there will be tons of negative consequences for the code base as a whole,
>> when trying to differentiate between toolchain and OS. So this will need to
>> be seriously considered.
>>
>> /Magnus
>>
>>
>> best regards,
>> Julian
>>
>> On Fri, Mar 11, 2022 at 9:16 PM Magnus Ihse Bursie <
>> magnus.ihse.bur...@oracle.com> wrote:
>>
>>> On 2022-03-11 12:55, Julian Waters wrote:
>>>
>>> > Hi all,
>>> >
>>> > How feasible would it be/much effort would it require to support
>>> compiling
>>> > with alternate toolchains on Windows besides Visual C++ (like the
>>> Windows
>>> > ports of clang and gcc) if we restrict the allowed toolchains to only
>>> those
>>> > that link against the ucrt? (Toolchains linking against the dated
>>> msvcrt
>>> > would present too many issues to work with)
>>>
>>> That'd be a huge undertaking. And any such patch would only be accepted
>>> into the code base if the organization behinded appeared trustworthy in
>>> their long-term commitment to keeping it working.
>>>
>>> /Magnus
>>>
>>>
>>>
>>
>

Reply via email to