RFC: Compiling as 16 bit
Morten Rønne
morten.roenne at tdcadsl.dk
Thu Sep 2 14:43:59 CDT 2010
On 02-09-2010 21:21, Alexandre Julliard wrote:
> Morten Rønne<morten.roenne at tdcadsl.dk> writes:
>
>
>> I am looking for a way to change windef.h so that it will create the
>> correct base types for both 16 and 32 bit compile.
>>
>> Openwatcom defines the symbol __I86__ while compiling for 16 bit, is
>> it acceptable that I use that to create 16 bit types?
>> It seems that _MSC_VER will change a few cases of int to long, but far
>> from enough.
>> Is _MSC_VER intended to be a 16 bit compile flag?
>> Or should I use something else more wine like (e.g. __WINE_16BIT_COMPILE).
>>
>> Also compiling 16 bit give some errors in other include files (after I
>> have defined proper sizes for the 16 bit compile)
>> ../../../include/winnt.h(3529): Error! E1040: Field width too large
>> #ifdef BITFIELDS_BIGENDIAN
>> unsigned NameIsString:1;
>> unsigned NameOffset:31;
>> #else
>> unsigned NameOffset:31;
>> unsigned NameIsString:1;
>> #endif
>> As it can be seen the include file uses unsigned directly and not a
>> type like DWORD or ULONG that would be a "safe" 32 bit.
>> Would it be acceptable to change this and others to a "proper" type
>> which I know to be size safe?
>>
> I don't think it makes sense to invest time into developing a 16-bit
> Winelib environment, and we certainly don't want to add 16-bit crap in
> the standard Win32 headers. These things should be part of the 16-bit
> compiler environment.
>
>
I can understand that, but the problem is that in order to write proper
test of the 16 bit environment I need to include the definitions of the
structs that make up the 16 bit execution environment e.g.
wine/winbase16.h and others.
That file (and probably also the others) will in turn include windef.h
and winbase.h, which will in turn include winnt.h and so on.
Ending up in a problem due to size errors.
Or are you saying that I should change wine/winbase16.h to not include
windef.h and winbase.h and make sure that they don't include anything
from "windows 32" include files?
Or should I duplicate all those file for the test enviroment, so that I
have to maintain the same structs in two different files?
Best Regards
Morten Rønne
More information about the wine-devel
mailing list