From: Gerrit E.G. H. <Ger...@be...> - 2007-07-27 04:29:01
|
L.S., I have spent some time to create a Win32 native port using MSVC2005 (Microsoft Visual Studio). The latest WGET grab (about two days ago) turned up a few more sources (e.g. crm_expr_svm.c) which made my build barf. It turned out that the new CRM114 C sources are not really all that 'C' compatible, but assume the availability of - for instance - dynamic array instantiation. That's a C++ feature IIRC, or is this in the latest C99 standard too? Anyway, MSVC2005(SP1) throws up a whole slew of errors there. Following a series of fixes, the code at least compiles and runs now (tested on Win32 native). Didn't run the megatest test yet, but this might be interesting for anyone staying at the bleading edge of CRM. The latest fixed sources (including all the fixes to make them build with MSVC2005) are available here: http://hebbut.net/Public.Offerings/crm114.20070727-i_a-Win32.7z (that's a 7zip archive; extract using the open source tool available at 7zip.org if you haven't got it already) If you like to receive a diff instead, I can do that too, just tell me how you like it. ;-) What's changed/fixed: - now compiles with MSVC2005 in regular 'C' mode. - added a win32 port c source file, which contains an implementation for truncate() - not available in the MSVC run-time libs. - removed a few warnings by fixing variable types or adding the necessary casts. - a wee bit of code cleanup Todo: - I intend to add a 'indent' target to the makefile to ease the use of GNU indent to reformat the code. That should at least reduce the throbbing headaches a bit. - And then there's validating my changes by rebuilding CRM114 on my Linux boxes, just to make sure I didn't break anything too severely. <RANT> Got to get this off my chest after spending some dev time with this baby. Can someone puh-leezze educate those interns or who-ever the joys of writing _portable_ and _maintainable_ code, thank you very much? If it compiles with gcc on your local box does not say everything is hunky dory anywhere. Oh, and before I forget: the [autoconf et al] GNU lads didn't go all the way to provide run-time library checks and all because the world is all you nix and me zero. So you shouldn't take all those fancy run-time library functions for granted. It might be worthwhile to have a look at how others keep their stuff portable. Before I go and start to utter PG-17 rated words, let me ask you this: ever considered how code looks that at _least_ tries to keep up an _appearance_ of readability and maintainability? It's something to do with using an _organized_ layout. Yes, I know... Chaos is also a type of organization. Absolutely brilliant. Here's your sign. A organized layout includes selecting an indent setup and applying it to all your code. Modern editors with scope start/end detection do not diminish the beauty of the judicious use of whitespace to indent/layout your stuff. And when it looks neat and organized, that's already half the experience when it comes to others looking at the stuff. And don't even me started on the 'but it works like it is' here. Aw, forget it. I'm getting old and grumpy. What am I yakking on about anyway? It compiles. And it works, anyway? So I'd better shut my trap, eh? </RANT> If you are interested in the code changes (or if you are definitely not), please say the word. Meanwhile I'll try and see if I can get that megatest to run on my Win32 boxes (NT2K/XP). Best regards and thanks to Bill et al for an interesting tool (which keeps my interest even with the rant above, so go figure; I must be hooked and love to be mutilated ;-) ), Ger |