Somlo: Your patch shows four AcpiTimerLib instances: AcpiTimerLib.inf, BaseAcpiTimerLib.inf, BaseRomAcpiTimerLib.inf and DxeAcpiTimerLib.inf.
I find BaseAcpiTimerLib.inf includes DxeAcpiTimerLib.c that uses PCD. But it doesn't add gUefiOvmfPkgTokenSpaceGuid.PcdOvmfHostBridgePciDevId in its INF file. So, it will build failure, because this PCD can't be found. Thanks Liming From: Andrew Fish [mailto:af...@apple.com] Sent: Thursday, October 23, 2014 4:30 AM To: Gabriel Somlo Cc: edk2-devel@lists.sourceforge.net Subject: Re: [edk2] Please Help: `_PCD_GET_MODE_16_PcdOvmfHostBridgePciDevId' undeclared On Oct 22, 2014, at 12:07 PM, Gabriel Somlo <gso...@gmail.com<mailto:gso...@gmail.com>> wrote: On Wed, Oct 22, 2014, Andrew Fish <af...@apple.com<mailto:af...@apple.com>> wrote: After doing this, things build just fine. But after further adding: OvmfPkg/Library/AcpiTimerLib/DxeAcpiTimerLib.inf: [Pcd] gUefiOvmfPkgTokenSpaceGuid.PcdOvmfHostBridgePciDevId OvmfPkg/Library/AcpiTimerLib/DxeAcpiTimerLib.c: ... HostBridgeDevId = PcdGet16 (PcdOvmfHostBridgePciDevId); ... I now get this error: /home/somlo/KVM-OSX/SCRATCH/edk2/OvmfPkg/Library/AcpiTimerLib/DxeAcpiTimerLib.c: In function `AcpiTimerLibConstructor': /home/somlo/KVM-OSX/SCRATCH/edk2/MdePkg/Include/Library/PcdLib.h:377:45: error: `_PCD_GET_MODE_16_PcdOvmfHostBridgePciDevId' undeclared (first use in this function) #define PcdGet16(TokenName) _PCD_GET_MODE_16_##TokenName /home/somlo/KVM-OSX/SCRATCH/edk2/MdePkg/Include/Library/PcdLib.h:377:45: This is usually an INF issue. What does the the AutoGen.h (with the library object files) files look like? That is where this should get declared. $ find . -name AutoGen.h | grep AcpiTimer ./Build/OvmfX64/DEBUG_GCC48/X64/OvmfPkg/Library/AcpiTimerLib/DxeAcpiTimerLib/DEBUG/AutoGen.h ./Build/OvmfX64/DEBUG_GCC48/X64/OvmfPkg/Library/AcpiTimerLib/BaseRomAcpiTimerLib/DEBUG/AutoGen.h ./Build/OvmfX64/DEBUG_GCC48/X64/OvmfPkg/Library/AcpiTimerLib/BaseAcpiTimerLib/DEBUG/AutoGen.h Well that is strange? The AutoGen.h is force included, and it looks like it has the correct. #define? The CC Flags should have something like -include AutoGen.h. 1st thing I would look into is a copy paste in the *.inf file of a GUID or library BaseName etc. You could look at the generated makefile to see if something strange is going on. GNUmakefile should be here: Build/OvmfX64/DEBUG_GCC48/X64/OvmfPkg/Library/AcpiTimerLib/DxeAcpiTimerLib/ Thanks, Andrew Fish $cat ./Build/OvmfX64/DEBUG_GCC48/X64/OvmfPkg/Library/AcpiTimerLib/DxeAcpiTimerLib/DEBUG/AutoGen.h /** DO NOT EDIT FILE auto-generated Module name: AutoGen.h Abstract: Auto-generated AutoGen.h for building module or library. **/ #ifndef _AUTOGENH_52DECA02_2EE8_4EAA_8EAD_1AB83F8A5955 #define _AUTOGENH_52DECA02_2EE8_4EAA_8EAD_1AB83F8A5955 #ifdef __cplusplus extern "C" { #endif #include <Base.h> #include <Library/PcdLib.h> extern GUID gEfiCallerIdGuid; extern CHAR8 *gEfiCallerBaseName; // PCD definitions #define _PCD_TOKEN_PcdOvmfHostBridgePciDevId 1U #define _PCD_GET_MODE_16_PcdOvmfHostBridgePciDevId LibPcdGet16(_PCD_TOKEN_PcdOvmfHostBridgePciDevId) #define _PCD_SET_MODE_16_PcdOvmfHostBridgePciDevId(Value) LibPcdSet16(_PCD_TOKEN_PcdOvmfHostBridgePciDevId, (Value)) RETURN_STATUS EFIAPI AcpiTimerLibConstructor ( VOID ); #ifdef __cplusplus } #endif #endif Thanks much, --Gabriel
------------------------------------------------------------------------------
_______________________________________________ edk2-devel mailing list edk2-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/edk2-devel