I am definitely in favor of using CMake for Windows builds. As to whether we should adopt it for the Unix build (minus Xvnc), I think further study is warranted. There are definite advantages to having a unified Unix/Windows build system, and architecturally, using CMake for both seems like the "right" thing to do. However, our autotools build system is rather complex and has a lot of O/S-specific elements, and I don't yet know enough about how host detection, etc. works in CMake to say whether we could make the transition cleanly. At minimum, I think that porting the Unix build to CMake will be a lot more difficult than porting the Windows build, and we may discover that the complexity of the resulting system overshadows any architectural advantage we gained through unification. At the very least, I think that if we decide to port the Unix build to CMake, we should tackle the Windows build first and then use that as a springboard for porting the Unix build in the long term (perhaps even post-1.1.)
You make a good point that MinGW can still be used with CMake, and in fact this is a much more usable solution on a native Windows machine than MinGW with autotools (autotools is the primary thing that causes the TigerVNC build to be unusably slow on Windows systems-- MinGW in isolation performs quite well.) Thus, even if we continue to maintain autotools for building the Unix code, there should be no reason to maintain autotools as a Windows build system anymore. I have been spending the last few weeks learning CMake and now have the TurboVNC Windows code base successfully building with it. It is a really solid system. When you use the MSVC IDE generators, it produces a comprehensive set of IDE projects that do exactly what IDE developers would expect. When you use the NMake generator, you can do everything from the command line. There was a little tweaking involved, but way less tweaking than is required to use autotools. Things generally "just work." 64-bit builds work beautifully, as do things like generating installers, etc. I can build upon much of this work to add a CMake system for TigerVNC/Windows, and I stand ready to do so, but since I'm not getting paid a salary to work on TigerVNC, I am seeking financial sponsorship for the effort (if anyone is interested in sponsoring it, please contact me off-list.) The ultimate deliverable will be an automated build system that generates binary packages for Linux, Mac, and Windows, and creating this new Windows build system is a critical prerequisite for me to start looking at more sexy enhancements to the Windows code, such as making WinVNC perform decently. DRC On 10/5/10 9:58 AM, Adam Tkac wrote: > On Thu, Sep 30, 2010 at 01:49:57PM -0400, Robert Goley wrote: >> Hmm... That may be my problem. I have been trying to build >> against 7.5 or the git repo. I haven't tried 7.4 since before the >> TLS stuff was officially added. I will try 7.4 again and post my >> results. Noticed the typo in the last email. I meant TigerVNC of >> course.... > > Hello all, > > let me put my two cents in. > > Finally I agree we should not use MinGW for building on Windows, this is > my major cons against MinGW: > > 1. There is problem with MinGW upstream, they have too strict > patch-accepting policy. Known example is my "CLSID_ActiveDesktop" > patch which is currently needed to build winvnc4 on Windows via MinGW. > In future we might hit this problem again which is not so nice. > Note I don't say MinGW's policy is bad, it simply is as is. However > occasional TigerVNC developers need to use custom patched MinGW build > system and I'm sure it's not so easy for middle-experienced Windows > developer who is not familiar with GNU build system to get it working. > > 2. This is purely subjective point, I don't like MinGW on Windows > much. In my opinion it simply doesn't fit into Windows style and I > prefer to use for example Visual Studio debugger, etc. > > I checked scons and cmake build systems and in my opinion cmake is the > right tool for us. With cmake I'm able to generate Makefiles on Linux > and use standard Linux tools, like gcc, make and gdb. On Windows > I'm able to generate VS project files and then use standard tools, > like msvc + headers + libs and VS's debugger. Note it's also possible > to generate MinGW makefiles on Windows so people who like MinGW won't > suffer from this change. CMake is far more flexible for our style of > development than GNU build chain. > > Note about Xvnc compilation. It's true we cannot use CMake for it. > However common/rfb/librfb.a can be compiled via CMake and then > Xvnc (with X.Org's GNU build system) can be linked against it. This > means we will maintain only unix/xserver/hw/Makefile.am. > > In my opinion we should consider to use CMake instead of GNU build > chain as our primary build system in 1.1. If I understand correctly > Darrell is also for CMake but I would like to hear opinion of Peter > and Pierre. > > My vote is +1 for CMake in TigerVNC 1.1. > > Regards, Adam > >>> Me too! That is why I'm willing to work on the CMake system. I haven't >>> yet been able to successfully build the Windows code myself, except for >>> just VNCViewer (which is painful because of all the MinGW dependencies.) >>> >>> As far as building on Lenny, I'm surprised that using build-xorg doesn't >>> work for you. That method, when used with the Xorg 7.4 code base, >>> should be backward compatible all the way back to RHEL 4 and its >>> contemporaries (Ubuntu 6, etc.) >>> >>> On 9/30/10 8:46 AM, Robert Goley wrote: >>>> I realize it would never completely replace autotools. I was just >>>> hoping for wrapper that would work a bit better. I haven't had that >>>> much luck with compiling TigerVNC on Lenny yet. The client stuff works >>>> fine but even compiling the whole Xorg tree for dependencies has not >>>> worked yet... May have just been my frustration coming thru... The >>>> Windows platform is next on my list and history tells me it never plays >>>> nice (MSVC or MinGW). I really want to start working with TightVNC's >>>> TLS connections. I applaud the work all the developers have done and >>>> look forward to when I can actually get to use it. > > ------------------------------------------------------------------------------ Beautiful is writing same markup. Internet Explorer 9 supports standards for HTML5, CSS3, SVG 1.1, ECMAScript5, and DOM L2 & L3. Spend less time writing and rewriting code and more time creating great experiences on the web. Be a part of the beta today. http://p.sf.net/sfu/beautyoftheweb _______________________________________________ Tigervnc-devel mailing list Tigervnc-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/tigervnc-devel