In light of e.g.
http://reactos.com:8080/archives/public/ros-dev/2004-November/000658.html
I would like to suggest the following header ideas.
Currently MingW has:
1.A set of headers that contain a copy of part of the platform SDK
2.Some extra stuff (like that ntdll.h)
3.A set of headers that contain a copy of part of the windows DDK
4.Mabie again some extra stuff MS doesnt have (I dont know)
5.A set of headers that contain a copy of part of the visual C++ runtime
library
6.Some extra stuff (mainly bits required to deal with differences between
GCC and Visual C I think)
WINE has:
1.A set of headers that are supposed to contain a copy of part of the
platform SDK (although some things have been claimed to be wrong)
2.A set of headers that are supposed to contain a copy of part of the
visual C++ runtime library (although again there may be things that are wrong)
and 3.Extra definitions for stuff in both header sets microsoft doesnt
define in the platform SDK (e.g. internal bits, functions microsoft doesnt
document etc)
ReactOS has:
w32api (the ROS import of it)
include/ddk (the ReactOS version of the windows DDK)
include/wine (the WINE windows API headers)
include/msvcrt (the MSVCRT headers ROS uses to build and link with msvcrt)
include (various misc ReactOS specific headers)
What I suggest for ReactOS (and I think some of this is already being done)
is as follows:
grab any headers from include/* that are public DDK headers (if there are
any) and make sure they are all in include/ddk
grab everything from the current WINE headers MingW is missing. Check that
its all correct and stuff and add it to the ReactOS import of w32api. (if
anything is found to be wrong in the wine headers, it should be fixed)
grab anything from include itself and add to w32api as needed
Get permission to relicence the stuff and contribute back to the main
w32api tree.
grab contents of include/msvcrt on ReactOS plus include/msvcrt on WINE and
also mingw-runtime.
Create one set of header files from the 3 sets such that it matches the
microsoft headers as closely as possible.
Merge w32api DDK headers with ROS DDK headers and create one set that,
again, matches the MS headers.
For w32api/mingw-runtime, the suggestion is that they look at all the "new
stuff" generated by the merging of the 3 sets of msvcrt headers plus the
ROS/WINE/w32api merger plus the DDK merger and look at acccepting it.
For WINE, I suggest they start using the new "merged" headers if at all
possible.
Basicly, the idea is that mingw-runtime would become the "definitive" set
of msvcrt.dll headers out there and that ReactOS, MingW and WINE would
start using it for any case where you are talking to msvcrt.dll from the
public side.
both ROS and WINE would then have their own internal msvcrt headers as
necessary to build their msvcrt* builds
Then, w32api would become the "definitive" set of win32 api headers and
would contain as much of the Microsoft Platform SDK as people have legally
cloned. All userland components of ReactOS (as well as kernel-side bits
that need the stuff in the userland headers e.g. win32k.sys) would use
this. Be nice if WINE were to use this too but because of what WINE is and
how it is built/used, there may be reasons for the WINE team not to use
w32api as the build headers used to build WINE.
And, there would be one "definitive" set of DDK headers which would be good
enough for building ReactOS with. And for building any kernel-side stuff
WINE decides to add (e.g. that stuff to load the device drivers for
vaerious copy protection systems that was being worked on). And for anyone
using MingW and MingW GCC to build kernel-mode stuff.
Anything private or project specific would go into a set of private headers
as needed for the different projects and sub-sections (dlls etc) within them
Anything exported by microsoft but undocumented would go into a set of
"undocumented" headers (which could then be shared between ReactOS and WINE
since I dont think w32api would accept anything not documented in MSDN)
Just suggestions btw, if they are good, say so
If they are bad, say so (and say why)
If there are issues with my idea, say what they are.