I have a bit odd issues with building OVMF from the current master branch (commit 0eccea3...), with the following setup using multiple workspaces (this is important):

- Windows 10, 64-bit
- Visual Studio 2017 build tools (conf'd with VS2017_PREFIX envvar)
- NASM 2.14.02 (conf'd with NASM_PREFIX envvar)
- Python 3.7.3 running the latest BaseTools
- WORKSPACE envvar points at a dir with extra modules to be included with OVMF (C:\Env\OvmfBuild)
- PACKAGES_PATH points at the EDK2 repo (C:\Env\Workspace\edk2)

All envvars are set before edksetup. Trying to build -a X64 -p OvmfPkg/OvmfPkgX64.dsc -b RELEASE -t VS2017 fails with the following:

"C:\Env\BuildTools\MSVS2017_SDK_WDK_Windows10_16299\Program Files\Microsoft Visual Studio\2017\BuildTools\VC\Tools\MSVC\14.10.25017\bin\Hostx86\x64\cl.exe" /nologo /E /TC /FIAutoGen.h /IC:\Env\Workspace\edk2\MdePkg\Library\BaseLib\X64 /IC:\Env\Workspace\edk2\MdePkg\Library\BaseLib /Ic:\Env\OvmfBuild\Build\OvmfX64\RELEASE_VS2017\X64\MdePkg\Library\BaseLib\BaseLib\DEBUG /IC:\Env\Workspace\edk2\MdePkg /IC:\Env\Workspace\edk2\MdePkg\Include /IC:\Env\Workspace\edk2\MdePkg\Include\X64 C:\Env\Workspace\edk2\MdePkg\Library\BaseLib\X64\LongJump.nasm > c:\Env\OvmfBuild\Build\OvmfX64\RELEASE_VS2017\X64\MdePkg\Library\BaseLib\BaseLib\OUTPUT\X64\LongJump.i
LongJump.nasm
        Trim --trim-long --source-code -o c:\Env\OvmfBuild\Build\OvmfX64\RELEASE_VS2017\X64\MdePkg\Library\BaseLib\BaseLib\OUTPUT\X64\LongJump.iii c:\Env\OvmfBuild\Build\OvmfX64\RELEASE_VS2017\X64\MdePkg\Library\BaseLib\BaseLib\OUTPUT\X64\LongJump.i         "C:\Env\BuildTools\NASM\2.14.02\nasm" -IC:\Env\Workspace\edk2\MdePkg\Library\BaseLib\X64\ -Ox -f win64 -o c:\Env\OvmfBuild\Build\OvmfX64\RELEASE_VS2017\X64\MdePkg\Library\BaseLib\BaseLib\OUTPUT\X64\LongJump.obj c:\Env\OvmfBuild\Build\OvmfX64\RELEASE_VS2017\X64\MdePkg\Library\BaseLib\BaseLib\OUTPUT\X64\LongJump.iii c:\Env\OvmfBuild\Build\OvmfX64\RELEASE_VS2017\X64\MdePkg\Library\BaseLib\BaseLib\OUTPUT\X64\LongJump.iii:16: fatal: unable to open include file `Nasm.inc' NMAKE : fatal error U1077: 'C:\Env\BuildTools\NASM\2.14.02\nasm.EXE' : return code '0x1'

Missing Nasm.inc, which is present in MdePkg/Include/X64/Nasm.inc - but the weird thing is, adding extra NASM include paths was added recently (in BaseTools/Source/Python/AutoGen/GenMake.py there's a block that replaces NASM_INC with appropriate directories, build_rule.template should generate NASM calls with these, as of commit 7c3a1ef). After adding a few prints to the GenMake I can see it does find the proper include paths, but none of them land in the final NASM call in the Makefile, even though it knows about the Nasm.inc dependency - the NASM_INC macro seems to be completely missing from the generated Makefile:

$(OUTPUT_DIR)\X64\LongJump.obj : $(MAKE_FILE)
$(OUTPUT_DIR)\X64\LongJump.obj : C:\Env\Workspace\edk2\MdePkg\Include\Base.h
$(OUTPUT_DIR)\X64\LongJump.obj : C:\Env\Workspace\edk2\MdePkg\Include\X64\Nasm.inc
$(OUTPUT_DIR)\X64\LongJump.obj : $(DEBUG_DIR)\AutoGen.h
$(OUTPUT_DIR)\X64\LongJump.obj : C:\Env\Workspace\edk2\MdePkg\Include\X64\ProcessorBind.h $(OUTPUT_DIR)\X64\LongJump.obj : C:\Env\Workspace\edk2\MdePkg\Include\Library\PcdLib.h $(OUTPUT_DIR)\X64\LongJump.obj : C:\Env\Workspace\edk2\MdePkg\Library\BaseLib\X64\LongJump.nasm     "$(PP)" $(PP_FLAGS) $(INC) C:\Env\Workspace\edk2\MdePkg\Library\BaseLib\X64\LongJump.nasm > c:\Env\OvmfBuild\Build\OvmfX64\RELEASE_VS2017\X64\MdePkg\Library\BaseLib\BaseLib\OUTPUT\X64\LongJump.i     Trim --trim-long --source-code -o c:\Env\OvmfBuild\Build\OvmfX64\RELEASE_VS2017\X64\MdePkg\Library\BaseLib\BaseLib\OUTPUT\X64\LongJump.iii c:\Env\OvmfBuild\Build\OvmfX64\RELEASE_VS2017\X64\MdePkg\Library\BaseLib\BaseLib\OUTPUT\X64\LongJump.i     "$(NASM)" -IC:\Env\Workspace\edk2\MdePkg\Library\BaseLib\X64\ $(NASM_FLAGS) -o c:\Env\OvmfBuild\Build\OvmfX64\RELEASE_VS2017\X64\MdePkg\Library\BaseLib\BaseLib\OUTPUT\X64\LongJump.obj c:\Env\OvmfBuild\Build\OvmfX64\RELEASE_VS2017\X64\MdePkg\Library\BaseLib\BaseLib\OUTPUT\X64\LongJump.iii

The nasty workaround is to copy Nasm.inc into MdePkg/Library/BaseLib/X64 and everything builds just fine after that.

Another interesting thing is that if I don't use WORKSPACE and PACKAGES_PATH (both contain no spaces and are on local file systems) but rather build everything directly in the EDK2 directory, OVMF also builds fine (Makefile contains the NASM_INC definition which is included in NASM calls). Have anyone also hit this issue?

Thanks, Richard


-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.

View/Reply Online (#39176): https://edk2.groups.io/g/devel/message/39176
Mute This Topic: https://groups.io/mt/31201466/21656
Group Owner: devel+ow...@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub  [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to