
On 23.10.2013 19:14, Andrey Semashev wrote:
The toolset does not completely determine the target platform. You can compile for different platforms (x86/x64, Win32/WinRT) with the same vc12 toolset. But if you need the WinXP support, you have to use the xp compatible version of the CRT. So, you need the vc12_xp toolset.
Yes, that's what I meant. To put it another way, when vc12_xp is used, you cannot tell what OS is targeted - XP, Vista, 7, 8 or 8.1. vc12 only narrows the list, excluding XP.
So, if I understand correctly, when you use a toolset you have to define the WinAPI version macro anyway, right? Yes. But, on the other hand, we can safely set the default target to the lowest target that is supported by the toolset.
Unfortunately, I see no easy way to support the _xp toolsets. As I understand, the boost build uses vcvarsall.bat to set the INCLUDE and LIB variables, and vcvarsall.bat doesn't support WinXP.
Or maybe just using the toolset defines it somehow? In that case, no specific support for toolset detection is required from Boost - we can just deduce the WinAPI version like we currently do. As I see, Windows XP is not a default target platform even for the _xp toolsets. The _xp toolsets use the Windows SDK 7.1, and the default target for this SDK is Windows 7.
-- Sergey Cheban