> 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