Hi, thanks all for making this happen!
I had a chance finally to compile/run it (using the Calculator), and here are my comments/questions for @James:
1- overall definitively this looks good: I guess there is no WIN64 target, because there is no pthread for WIN64?
2- Cosmetic: something needs to define "#define HAVE_GETTIMEOFDAY" (windows/config.h?)
3- Cosmetic: #define __BYTE_ORDER: this is not necessary anymore, another patch of mine previously fixed the auto detection on win32 using boost. The README may also reflect that (double should be fine).
4- Cosmetic: typedef __kernel_size_t size_t, typedef __kernel_ssize_t ssize_t: I found this easier version: typedef ptrdiff_t ssize_t; (don't think size_t needs to be defined AFAIK)
5- Cosmetic: #define NOMINMAX (before Windows.h, because std::min is used in thrift)
6- Cosmetic warning: #pragma warning(disable: 4996) and #pragma warning(disable: 4250) could be nice ("POSIX name for this item is deprecated", "inherits via dominance")
7- config.h: here is my biggest concern: you decided (honorably!) to re-use config.h (and define HAVE_CONFIG_H): I find it in practice annoying because it assumes "config.h" is at the same level of "Thrift.h". This forces in turn to add <thrift folder>/windows to the include path. What happens is when mixing with other libraries who also use config.h, it may take precedence over thrift's config.h. Ideally, I would prefer if not using HAVE_CONFIG_H, and do something like this instead:
When included from Thrift.h, this guarantees to pick the right config.h (and not Python's one for example).
Now what happens for the source code .cpp which does not include Thrift.h? Well since you are using already force-compilation, you could add windows/config.h to the list for forced headers. I found this to work in practice.
Again, thanks a lot for the patch!