No subject


Tue Aug 30 17:20:58 CDT 2005


< revision 1.15
< date: 2001/07/26 21:43:29;  author: julliard;  state: Exp;  lines: +1 =
-1
< Patrik Stridvall <ps at leissner.se>
< Removed inclusion of winnt.h because the porting layer shouldn't
< include Windows specific stuff.

Note that as the comment says we shouldn't include Windows specific =
stuff
in the porting layer.

>    One possible solution would be to handle DELETE differently, e.g.
> prefix it in Wine, and not prefix it for Winelib, or something like
> that. But wine/port.h is not the only header that needs to include
> 'config.h'. There is also:
>=20
>    cdrom.h console.h
>    ts_shape.h ts_xf86dga.h ts_xf86dga2.h ts_xf86vmode.h ts_xlib.h
>    ts_xpm.h ts_xresource.h ts_xshm.h ts_xutil.h ts_xvideo.h
>    wine_gl.h
>    x11drv.h
>=20
>    I think it would be wrong to move all these #includes so that they
> are first. Plus for the ts_*.h headers I am not sure it would be very
> good. Also #including config.h in these is a bit pointless=20
> since we know
> that the file including them will need to include config.h too.

Sounds reasonable.
=20
>    So I propose the following instead:
>  * config.h has no multiple include protection. Add one=20
> (__WINE_CONFIG_H
> macro).
>  * modify the above headers so that they don't include config.h but
> contain the following instead:
> #ifndef __WINE_CONFIG_H
> # error You must include config.h to use this header
> #endif
>    This will make sure that no-one forgets to include config.h when
> necessary.
>  * modify all files that include the above headers so that=20
> they include
> config.h as the first header. This actually requires relatively =
little
> work.

That is probably a good idea.

>  * do the same for port.h
>  * debugtools.h also uses config.h because it needs NO_DEBUG_MSGS and
> NO_TRACE_MSGS. Modify configure.in so that these are put on=20
> the command
> line instead. They are not the of the same nature as the other macros
> anyway: they are completely system independent. Also this will make =
it
> possible to use the Wine debug macros in Winelib applications. Then
> debugtools.h will no longer need to #include config.h. This cuts the
> number of files causing trouble in about half.

That is probably a good idea too.

>  * there are 3 other files that #include config.h for no good reason
> that I can see: gdi.h, heap.h and thread.h. Remove the #includes from
> there. Anyway, winapi_check ensures that all the .c files that need
> config.h already include it directly.

Yes. However that algoritm (or rather heuristics) that decide this is =
not
perfect but it catch most of the cases and the compiler catches a few =
more
and the linker most (all?) of the rest.

>  * maybe modify winapi_check to make sure that no header file =
includes
> 'config.h' (this would be the frosting on the cake)

This is easy. I will do that if Alexandre accept a patch what requires =
this.
=20
>    Doing this (except for port.h) I have a tree that builds on =
Solaris
> with no _FILE_OFFSET_BITS warning. So if the above sounds good, I =
have
> patches that are almost ready.

Ah. Good.




More information about the wine-devel mailing list