Hi Jonathan,
I am already working on a complete header system overhaul that's been
approved and very much requested by the other developers.
Thanks for your suggestions. Some of them aren't so right, but the main
parts of what you said I'm already doing, but in a more orderly and
simplified fashion to guarnatee support with MS PSDK/DDK/IFS.
I invite you to read one of my older blog entries to find out more about it.
Best Regards,
Alex Ionescu
Jonathan Wilson wrote:
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.
_______________________________________________
Ros-dev mailing list
Ros-dev(a)reactos.com
http://reactos.com:8080/mailman/listinfo/ros-dev