mirror of https://github.com/ipxe/ipxe.git
[efi] Disable static assertions in EFI headers on non-EFI platforms
The EDK2 headers may be included even in builds for non-EFI platforms.
Commits such as 9de6c45
("[arm] Use -fno-short-enums for all 32-bit
ARM builds") have so far ensured that the compile-time checks within
the EDK2 headers will pass even when building for a non-EFI platform.
As a more general solution, temporarily disable static assertions
while including UefiBaseType.h if building on a non-EFI platform.
This avoids the need to modify the ABI on other platforms.
Signed-off-by: Michael Brown <mcb30@ipxe.org>
pull/968/head
parent
b0093571f8
commit
9cb0a4b8ec
|
@ -43,10 +43,19 @@ FILE_LICENCE ( GPL2_OR_LATER );
|
|||
* checking somewhat useless. Work around this bizarre sabotage
|
||||
* attempt by redefining EFI_HANDLE as a pointer to an anonymous
|
||||
* structure.
|
||||
*
|
||||
* EFI headers perform some ABI validation checks via _Static_assert()
|
||||
* that may fail when EFI headers are included on a non-EFI platform.
|
||||
* Temporarily disable static assertions to allow these headers to be
|
||||
* included.
|
||||
*/
|
||||
#define EFI_HANDLE STUPID_EFI_HANDLE
|
||||
#ifndef PLATFORM_efi
|
||||
#define _Static_assert(expr, msg)
|
||||
#endif
|
||||
#include <ipxe/efi/Uefi/UefiBaseType.h>
|
||||
#undef EFI_HANDLE
|
||||
#undef _Static_assert
|
||||
typedef struct {} *EFI_HANDLE;
|
||||
|
||||
/* Include the top-level EFI header files */
|
||||
|
|
Loading…
Reference in New Issue