On Tue, Aug 11, 2015 at 8:47 AM, Gavin Lambert
On 11/08/2015 16:55, Andrey Semashev wrote:
I wonder if we should be building a 64-bit bjam on a 64-bit Windows by default though. It's not a change for 1.59 but still worth considering for future releases.
That would be another way to solve it, yes. Although then the question would be whether it should use the native x86 compiler or the amd64_x86 cross-compiler. (It is actually possible in some Windows versions to remove the ability to run 32-bit code, although I would be quite surprised if anyone actually does that, especially in a development environment.)
Note that currently a 64-bit bjam *won't* use the cross-compiler; I think it just operates on a "by default we're running x86" assumption rather than trying to follow the native architecture like you suggested above. Comments near the code I patched seem to support this. :)
I'm not the author of that code but I suspect the reason for that is that the amd64_x86 cross-compiler was not shipped until VS2015; there was only the native x86 compiler. I think it is safe to keep using it (the x86 compiler) since we know every 64-bit Windows is able to run 32-bit programs. The other way around is not true though - not every Windows that manifests itself as 32-bit is able to run 64-bit programs.