WinHost.exe from EmulatorPkg and StdLib applications


Tim Lewis
 

I am having trouble building StdLib applications inside of EmulatorPkg.dsc.
When I add !incude StdLib/StdLib.inc I will always see a warning message
about stdio.h.



This comes down to the use of /X in StdLib.inc to prevent C library apps
from getting the host environments include files. But that is what WinHost
needs. And I can't figure out how to "turn off /X" for just one module.



Any advice here?



Thanks,



Tim


Liming Gao
 

Can you try the way to append compiler option in [Components] section for the specific modules?

I see StdLib/StdLib.inc has such usage.

-----Original Message-----
From: discuss@edk2.groups.io [mailto:discuss@edk2.groups.io] On Behalf Of Tim Lewis
Sent: Thursday, July 25, 2019 4:55 PM
To: discuss@edk2.groups.io
Subject: [edk2-discuss] WinHost.exe from EmulatorPkg and StdLib applications

I am having trouble building StdLib applications inside of EmulatorPkg.dsc.
When I add !incude StdLib/StdLib.inc I will always see a warning message
about stdio.h.



This comes down to the use of /X in StdLib.inc to prevent C library apps
from getting the host environments include files. But that is what WinHost
needs. And I can't figure out how to "turn off /X" for just one module.



Any advice here?



Thanks,



Tim



Michael D Kinney
 

Hi Tim,

I happened to be looking at this over the weekend.

I was able to resolve the build issues for XCODE5
for the IA32 version of EmulatorPkg, but not X64.
I did not verify if it boots yet, so maybe you can
help verify that.

A WIP branch with what I got working is here:

https://github.com/mdkinney/edk2/commits/BZ_none_EmulatorPkg_Fixes

It also fixes some VS2017/VS2015 issues with EmulatorPkg.

Best regards,

Mike

-----Original Message-----
From: discuss@edk2.groups.io
[mailto:discuss@edk2.groups.io] On Behalf Of Tim Lewis
Sent: Thursday, July 25, 2019 1:55 AM
To: discuss@edk2.groups.io
Subject: [edk2-discuss] WinHost.exe from EmulatorPkg
and StdLib applications

I am having trouble building StdLib applications inside
of EmulatorPkg.dsc.
When I add !incude StdLib/StdLib.inc I will always see
a warning message about stdio.h.



This comes down to the use of /X in StdLib.inc to
prevent C library apps from getting the host
environments include files. But that is what WinHost
needs. And I can't figure out how to "turn off /X" for
just one module.



Any advice here?



Thanks,



Tim



Tim Lewis
 

Mike --

I don't have XCODE5 so I cant rebuild here but I can try out the WinHost.exe
and I will check out the VS2017 and VS2015 changes since I have them handy.

Tim

-----Original Message-----
From: discuss@edk2.groups.io <discuss@edk2.groups.io> On Behalf Of Michael D
Kinney
Sent: Thursday, July 25, 2019 9:13 AM
To: discuss@edk2.groups.io; tim.lewis@...; Kinney, Michael D
<michael.d.kinney@...>
Subject: Re: [edk2-discuss] WinHost.exe from EmulatorPkg and StdLib
applications

Hi Tim,

I happened to be looking at this over the weekend.

I was able to resolve the build issues for XCODE5 for the IA32 version of
EmulatorPkg, but not X64.
I did not verify if it boots yet, so maybe you can help verify that.

A WIP branch with what I got working is here:

https://github.com/mdkinney/edk2/commits/BZ_none_EmulatorPkg_Fixes

It also fixes some VS2017/VS2015 issues with EmulatorPkg.

Best regards,

Mike


-----Original Message-----
From: discuss@edk2.groups.io
[mailto:discuss@edk2.groups.io] On Behalf Of Tim Lewis
Sent: Thursday, July 25, 2019 1:55 AM
To: discuss@edk2.groups.io
Subject: [edk2-discuss] WinHost.exe from EmulatorPkg and StdLib
applications

I am having trouble building StdLib applications inside of
EmulatorPkg.dsc.
When I add !incude StdLib/StdLib.inc I will always see a warning
message about stdio.h.



This comes down to the use of /X in StdLib.inc to prevent C library
apps from getting the host environments include files. But that is
what WinHost needs. And I can't figure out how to "turn off /X" for
just one module.



Any advice here?



Thanks,



Tim



Tim Lewis
 

Mike --

I moved my !include StdLib.inc to the very end of EmulatorPkg.dsc and I
found that the build issues went away. But if I included it before the
[BuildOptions] line, it would have trouble with the header files. My guess
is there is an order dependency about the way that the CC_FLAGS items are
processed.

#DEFINE EMULATE
#!include StdLib/StdLib.inc

[BuildOptions]
MSFT:DEBUG_*_*_CC_FLAGS = /Od /Oy-
MSFT:NOOPT_*_*_CC_FLAGS = /Od /Oy-

MSFT:*_*_*_DLINK_FLAGS = /ALIGN:4096 /FILEALIGN:4096
/SUBSYSTEM:CONSOLE
MSFT:DEBUG_*_*_DLINK_FLAGS = /EXPORT:InitializeDriver=$(IMAGE_ENTRY_POINT)
/BASE:0x10000
MSFT:NOOPT_*_*_DLINK_FLAGS = /EXPORT:InitializeDriver=$(IMAGE_ENTRY_POINT)
/BASE:0x10000

DEFINE EMULATE
!include StdLib/StdLib.inc

I did try your changes with VS2017 and VS2015 and ran WinHost with both with
no trouble. And now I have my StdLib apps working too!

Thanks,

Tim

-----Original Message-----
From: Kinney, Michael D <michael.d.kinney@...>
Sent: Thursday, July 25, 2019 9:13 AM
To: discuss@edk2.groups.io; tim.lewis@...; Kinney, Michael D
<michael.d.kinney@...>
Subject: RE: [edk2-discuss] WinHost.exe from EmulatorPkg and StdLib
applications

Hi Tim,

I happened to be looking at this over the weekend.

I was able to resolve the build issues for XCODE5 for the IA32 version of
EmulatorPkg, but not X64.
I did not verify if it boots yet, so maybe you can help verify that.

A WIP branch with what I got working is here:

https://github.com/mdkinney/edk2/commits/BZ_none_EmulatorPkg_Fixes

It also fixes some VS2017/VS2015 issues with EmulatorPkg.

Best regards,

Mike


-----Original Message-----
From: discuss@edk2.groups.io
[mailto:discuss@edk2.groups.io] On Behalf Of Tim Lewis
Sent: Thursday, July 25, 2019 1:55 AM
To: discuss@edk2.groups.io
Subject: [edk2-discuss] WinHost.exe from EmulatorPkg and StdLib
applications

I am having trouble building StdLib applications inside of
EmulatorPkg.dsc.
When I add !incude StdLib/StdLib.inc I will always see a warning
message about stdio.h.



This comes down to the use of /X in StdLib.inc to prevent C library
apps from getting the host environments include files. But that is
what WinHost needs. And I can't figure out how to "turn off /X" for
just one module.



Any advice here?



Thanks,



Tim