[ros-kernel] about headers

Danny Smith dannysmith at clear.net.nz
Sun Oct 19 21:52:26 CEST 2003


----- Original Message -----
From: "Jonathan Wilson"

> What we should have is:
> 1.Public headers + libs (basicly, a clone of what is in the latest
> Microsoft Platform SDK)
> 2.DDK headers + libs (basicly, a clone of what is in the windows
server
> 2003 DDK)
> 3.IFS kit headers + libs (clone of ntifs.h and related headers + libs)
> 4.undocumented userland headers + libs (i.e. anything exported from
> userland dlls that isnt in #1)
> 5.undocumented kernel headers + libs (i.e. anything from kernel
> dlls/drivers/etc that isnt in #2/#3)
> 6.native API headers + libs (i.e. all that stuff thats visible from
ntdll.dll)
> 7.internal headers (i.e. stuff thats not visible outside the dll its
> declared in)
> 8.MSVCRT headers + libs (i.e. headers + libs included with visual C++
that
> are related to talking to
>
crtdll.dll/msvcrt20.dll/msvcrt40.dll/msvcrt.dll/msvcr70.dll/msvcr71.dll/
etc)
> 9.MingW-Runtime headers + libs (i.e. those bits of code and stuff
necessary
> for MingW-Runtime but not used by MS at all, usually needed to account
for
> differences in how MS and GCC do things)
> and 10.Visual C++ headers + libs (i.e. headers + libs for stuff in
visual
> C++ that we dont want to (or cant) directly copy e.g. MFC, ATL,
> MSVCPRT.DLL, MSVCIRT.DLL etc)
>
> We should follow the same dependancy tree as MS does (i.e. if x.h from
the
> PFSDK includes y.h, our copy of x.h should also)
> If microsoft declares something in more than one header file, we
should do
> it too (with the appropriate #ifndef xxx just like MS)
>
> Basicly, when it comes to windows development, Visual C++, the
Platform
> SDK, the DDK and the IFS kit are the "gold standard".
> The header files and libraries included with those are the most
accurate.
> We should work towards making our header files match those as much as
> possible. That way, stuff written for Visual C++ and the MS headers
should
> compile as-is on GCC + MingW-Runtime + w32api.
>
The only way you can do that is to refer to proprietary headers.  That
is not clean.

> Also, our headers should not contain anything not found in the MS
headers.

As far as the mingw runtime headers are concerned, you will have a hard
time convincing me to remove all the ISO C99 extras.  You will also have
a hard time convincing me that removal of all the POSIX-isms is a good
thing, since they really assist building of things like binutils, gcc,
libiconv, gettext, make, etc.

As someone who has had input into the maintenace of gcc compiler suppor
for mingw,
the hardest things to maintain are the MS-extensions (dllimport being
the worst because of the ambiguity of the syntax).   Adherence to the MS
"gold standard" has meant that mingw is forced to use sjlj exceptions
rather than DWARF2.

Personally, I would prefer that mingw gcc/binutils move closer to theFSF
mainstream
rather than drifting from it.  Likewise, I would prefer that mingw
runtime moves in dirction towards ISO C, C++ conformance (eg, make the C
headers namespace aware when in C++)  rather than towards MS
conformance.

Speaking for myself only.

Danny
>
>
> _______________________________________________
> Ros-kernel mailing list
> Ros-kernel at reactos.com
> http://reactos.geldorp.nl:8080/mailman/listinfo/ros-kernel



More information about the Ros-kernel mailing list