On Fri, 2003-10-10 at 04:27, Richard Campbell wrote:
I would like to take some time and modify the apps in the ros-apps repository to use the latest stable build of mingw + the latest stable build of w32api instead of the reactos build system, is this okay or is there a reason that we are using the ReactOS build system?
[long-winded analysis followed by a proposal and request for comments]
I've been giving this some thought lately. This is not as trivial of a question as it seems. In the windows world, on the kernel side at least, there is a single approved compiler (i.e. one particular build), which is shipped on the DDK CD. You must use precisely the build environment (compilers, headers, and import libraries) that are shipped in the DDK in order to be supported by Microsoft and/or the community.
Linux used to require GCC 2.7.2.3 - i don't know what it asks for now, but the reason had to do with a combination of compiler bugs that had been worked around and some insulation against future upsetting changes.
On the flip side, Royce Mitchell used to say that he preferred to use an old GCC to build ROS with because it caught different coding errors, and lots of people (myself included) believe that we should not be tied to a compiler because that makes us dangerously dependant on that compiler. Also, MSVC and Intel both generate better code in certain circumstances (see a recent Doctor Dobb's article for a c++ comparison among those three and others).
The current source tree doesn't support MSVC in a few places (I know NDIS, for sure, won't compile right, and I remember seeing others), so for the moment we really are MinGW-dependant. I also worry about people getting a random compiler/w32api/whatever, having problems, and getting a bad impression of the project due to a broken build - and the way it breaks will look ugly most of the time. The final straw for me, though, is that we can't do some things like enabling -Werror in our makefiles because we're afraid we'll break people's builds.
With that said, I propose that we go the Microsoft route, but provide instructions for people that want to experiment with other stuff. We should have an official version of the compiler, linker, binutils, etc, and an official w32api version. If anybody has time, it'd be nice to package the ReactOS SDK/DDK with the tools, headers, libs, and so on, so that new developers can come up to speed more quickly.
So, what does everyone else think?
-Vizzini