Re: Guile 64-bit Windows support, redux

Mike Gran <[email protected]> Wed, 26 Feb 2025 01:53:40 +0000 (UTC)
Newsgroups gmane.lisp.guile.devel
Message-ID <[email protected]>
>> If we do care about building with the native MinGW toolchain,
>> in my humble opinion, there isn't much value in supporting then many
>> versions of MinGW other than UCRT64.

> Is there any doco on how to do that?

Well these days, as far as I can tell, the MinGW that lives on Sourceforge seems unmaintained
or lightly maintained, so most people have moved on to what http://www.mingw-w64.org and
http://www.msys2.org provide.  The former is the basic compiler, and the latter is all the
packages.  They provide various versions of the compiler and of each package.

For the compiler, if you want a version of GCC that runs on Windows,
you're basically choosing between the 32-bit and 64-bit version:
I'd imagine that most Windows people get pre-built toolchains from Msys2, and
most cross compilers download packages from their upstream. But there is a bunch
of sources of pre-built compilers here:

www.mingw-w64.org/downloads/

For the packages, they have to be built against a Windows C library of which there are two:
UCRT (newer) and MSVCRT.  UCRT comes very close to actually handling Unicode,
while MSVCRT is more UCS-16 Unicode only.

In the Msys2 Package repository, if you choose a package, you can choose 32 vs 64-bit,
UCRT vs MSVCRT, and GCC vs Clang.

Look at this page, for example,

https://packages.msys2.org/base/mingw-w64-gmp

The best version (GCC, UCRT, 64-bit) has a name of the form mingw-w64-ucrt-x86_64-gmp
while the old 32-bit MSVCRT version has a name of the form mingw-w64-i686-gmp. And there are
several others. Just gotta make sure your libraries all have the same basic type; you can't mix and match.

Regards,
Mike Gran