> On Nov 7, 2014, at 2:53 PM, Bill Paul <wp...@windriver.com> wrote:
> 
> Of all the gin joints in all the towns in all the world, Andrew Fish had to 

FYI Tanqueray and Tonic is the official drink of EFI. At least that is what 
Mark, Ken, and I decided when we were traveling around to all the Itanium(tm) 
Processor partners trying to convince them EFI was a good idea.  

> walk into mine at 11:44:50 on Friday 07 November 2014 and say:
> fAnyway, I used GNU EFI as the basis for the app, so I originally wrote the 
> assembly code in GNU assembler syntax.
> 
> But I wanted people to be able to use the EDK to compile the app as well, so 
> I 
> made the code portable and provided a script to bundle up all the application 
> source with a set of EDK build spec files into a ZIP file which could be 
> unpacked in the EDK build environment and compiled there. Since I wanted 
> people to be able to build on Windows (or in fact any of the supported EDK 
> host platforms), I created MASM versions of the assembly code too.
> 
> If EDK switches to using NASM, doesn't that mean I have to convert my 
> application's assembly code to NASM too? I hope not, because maintaining two 
> versions of the assembly code is work enough.
> 

For X64 and IA32 here is what happens in an INF 
If you have a .nasm file you will assemble that file. 
If you have a .S file the GCC (includes Xcode) will assemble that file
If you have a .asm VC++ and Intel compilers will assemble that file. 

So if you only have .nasm in the INF you are good. If only have .asm and .S you 
are good. For other combinations you have to use the INF build FAMILY override 
in the INF. 

Here is an example of the overrides:
https://svn.code.sf.net/p/edk2/code/trunk/edk2/MdePkg/Library/BaseLib/BaseLib.inf
[Sources.X64]
  X64/Thunk16.asm
  X64/Thunk16.nasm | GCC 
So what this means is for VC++ and Intel compilers use Thunk16.asm, and for GCC 
and Xcode use Thunk16.nasm. If the | GCC did not exist the Thunk16.nasm would 
also assemble for VC++ and Intel compilers. 

So basically all my complaining is that one line makes Xcode no longer able to 
build the BaseLib without a NASM assembler installed on the system. The | GCC 
is what keeps all the VC++ and Intel complier tools chains from not having to 
support NASM to build anything. 

I was having lunch today with Mike Kinney, and Vincent Zimmer (unfortunately no 
Tanqueray involved) and I think I’ve distilled the issue down to a new feature 
that we need from the build system.  I want to be able to have an Xcode (or 
VC++, or Intel compiler) target that uses .S (.asm) if both .S (.asm) and .nasm 
are present. I was want to be able to have an Xcode target that uses .nasm if 
both the .S and .nasm are present. Mike was going to go talk to the BaseTools 
maintainers and figure out the best way to do this.

Thanks,

Andrew Fish


------------------------------------------------------------------------------
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/edk2-devel

Reply via email to