> I will have to look into that. It doesn't sound like something we want. 
Though I don't really understand why changing the host should change the 
way gcc compiles code, unless it does so for cygwin itself.

Changing the host changes which compiler gets used to create the binaries. 
In Cygwin or Linux, you can call the MinGW compilers by providing 
--host=x86_64-w64-mingw32 or similar, if you're using conventional 
autotools. It's also possible in Cmake but it's about 5 lines worth of 
flags (or a toolchain file with the same content) - it works, eventually, 
but it's really picky. 

> It was my understanding that the Mingw compiler could be used from 
Cygwin. Perhaps I am confused about it, but it seems like interrogating the 
compiler may not give the information we need.

Right, but when you configure with --host=x86_64-w64-mingw32 in Cygwin or 
Linux, you're using a cross-compiler that is prefixed by the host triple: 
x86_64-w64-mingw32-gcc and similar for binutils. So you can't just ask 
"gcc" for information - in a lot of ways MSYS(2) is a hack to avoid 
worrying about MinGW cross-compilation, and it leads to some bad ways of 
doing things. I think it's better to do the work to make a library possible 
to cross-compile, than to give up and say MSYS(2) is the only method of 
compiling it for Windows. I've been cross-compiling Julia itself and all of 
its dependencies from both Linux and Cygwin for months, I very rarely touch 
MSYS(2) any more.

> We can't use the accepted gnu triples in MPIR and that has always been 
the case for GMP too. They don't give nearly enough information for our 
needs.

Of course they don't provide a complete story when you're worrying about 
assembly and various SIMD instruction sets. But that's not the GNU triple's 
job. That information should be determined and represented separately, 
you're not going to include this kind of information in the host prefix of 
the name of a cross-compiler executable for example. GMP is also a pretty 
bad actor in terms of its autotools usage - making a symlink to libgmp.dll 
called libgmp.lib in lib/ is completely the wrong thing to do for MinGW. 
Not your fault I know, but sounds like you may have inherited some 
autotools abuses from GMP.
 
 

Reply via email to