From: Ruben V. B. <van...@gm...> - 2011-10-29 11:32:32
|
Hi everyone, Continuing my extreme success, I have created another gem for you to use and enjoy. I have built the latest GCC 4.6, applied the posix threading patch using winpthread as a threading library, and am able to bring you almost all joys of C++11 std::thread and other hidden GCC threading gems (Frankly, I don't know of any, but it wouldn't surprise me if there were some pthreads-only features in GCC). I decided to do away with the normal win32 threaded builds to favor these more functional ones. Some notes so you don't get lost or confused: - posix threaded GCC does not mean native Win32 threads are off limits. This is only an internal GCC configuration option, that is used in the runtime libraries. So you'll need to distribute libwinpthread-1.dll along with libgcc_s_sjlj-1.dll with your programs if you get a crash on startup without it. Licenses are not a problem. Winpthreads is part of MinGW-w64's experimental branch, and is a candidate for inclusion in the main CRT once it gets past its baby-steps. - I re-enabled optimizations, which means all binaries are build with: "-O2 -mtune=core2 -fomit-frame-pointer -momit-leaf-frame-pointer" , plus a bunch of graphite optimization options for non-Mac builds (GCC 4.2 does not have graphite). Theoretically, this should result in improved performance vs the other recent builds, just like in my first builds. - Full Mac (32-bit), Cygwin, and Linux (64-bit) cross-compiler support. - Clang 3.0 is in Release Candidate, so I have shipped a Clang 3.1 (top of SVN trunk, as always). Not much change going on here in the Windows support (yet), I did get id of the dllexport/dllimport problems for 64-bit. Exporting whole classes is not yet available, making C++ a dodgy business still. - If demand is high enough (and I find the time) I'll throw together a GCC 4.7 in the near future as well, although this one will still have no Mac cross-compiler because the build fails. I attempted to also build 64-bit Mac and 32-bit Linux binaries, but failed. Any ideas or experiences on how to cross-compile a full toolchain from 64-bit Linux for 32-bit Linux are welcome. I am working on porting libc++ to Windows. GCC is not ready for it, and Clang doesn't support exceptions on Windows, so I could use any help anyone is willing to give to get solid exception handling in LLVM/Clang for Windows. sjlj is not really an option, as LLVM only supports it for ARM, and they like zero-cost exceptions a lot better. On Windows, this would mean some form of SEH support, with supporting unwind and libcxxrt libraries. Capable volunteers are welcome to help here ;-) (I'm far too dumb to attempt this...) If there are any problems, please let me know via this list so I can see what can be done to fix them. Ruben PS: links are below http://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win64/Personal%20Builds/rubenvb/4.6.3/ http://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win32/Personal%20Builds/rubenvb/4.6.3/ http://sourceforge.net/projects/mingw-w64/files/Toolchain%20sources/Personal%20Builds/rubenvb/gcc-4.6.3_rubenvb.tar.lzma/download |