IntelFsp2WrapperPkg: Replace include guards with #pragma once

Replace traditional `#ifndef`/`#define`/`#endif` include guards with
`#pragma` once.

`#pragma once` is a widely supported preprocessor directive that
prevents header files from being included multiple times. It is
supported by all toolchains used to build edk2: GCC, Clang/LLVM, and
MSVC.

Compared to macro-based include guards, `#pragma once`:

- Eliminates the risk of macro name collisions or copy/paste errors
  where two headers inadvertently use the same guard macro.
- Eliminate inconsistency in the way include guard macros are named
  (e.g., some files use `__FILE_H__`, others use `FILE_H_`, etc.).
- Reduces boilerplate (three lines replaced by one).
- Avoids polluting the macro namespace with guard symbols.
- Can improve build times as the preprocessor can skip re-opening the
  file entirely, rather than re-reading it to find the matching
  `#endif` ("multiple-include optimization").
  - Note that some compilers may already optimize traditional include
    guards, by recognzining the idiomatic pattern.

This change is made acknowledging that overall portability of the
code will technically be reduced, as `#pragma once` is not part of the
C/C++ standards.

However, this is considered acceptable given:

1. edk2 already defines a subset of supported compilers in
   BaseTools/Conf/tools_def.template, all of which have supported
   `#pragma once` for over two decades.
2. There have been concerns raised to the project about inconsistent
   include guard naming and potential macro collisions.

Approximate compiler support dates:

- MSVC: Supported since Visual C++ 4.2 (1996)
- GCC: Supported since 3.4 (2004)
  (http://gnu.ist.utl.pt/software/gcc/gcc-3.4/changes.html)
- Clang (LLVM based): Since initial release in 2007

Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com>
This commit is contained in:
Michael Kubacki 2026-02-03 13:38:30 -05:00 committed by mergify[bot]
parent 86047d4742
commit 648ea00a19
10 changed files with 10 additions and 40 deletions

View file

@ -6,8 +6,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
**/
#ifndef _FSP_MEASUREMENT_LIB_H_
#define _FSP_MEASUREMENT_LIB_H_
#pragma once
#define FSP_MEASURE_FSP BIT0
#define FSP_MEASURE_FSPT BIT1
@ -37,5 +36,3 @@ MeasureFspFirmwareBlob (
IN EFI_PHYSICAL_ADDRESS FirmwareBlobBase,
IN UINT64 FirmwareBlobLength
);
#endif

View file

@ -6,8 +6,7 @@
**/
#ifndef __FSP_WRAPPER_API_LIB_H__
#define __FSP_WRAPPER_API_LIB_H__
#pragma once
#include <FspEas.h>
@ -90,5 +89,3 @@ EFIAPI
CallFspSmmInit (
IN VOID *FspiUpdDataPtr
);
#endif

View file

@ -6,8 +6,7 @@
**/
#ifndef __FSP_WRAPPER_API_TEST_LIB_H__
#define __FSP_WRAPPER_API_TEST_LIB_H__
#pragma once
#include <PiPei.h>
@ -64,5 +63,3 @@ EFIAPI
TestFspSmmInitApiOutput (
IN VOID *FspiUpdDataPtr
);
#endif

View file

@ -6,8 +6,7 @@
**/
#ifndef __FSP_WRAPPER_HOB_PROCESS_LIB_H__
#define __FSP_WRAPPER_HOB_PROCESS_LIB_H__
#pragma once
/**
Post FSP-M HOB process for Memory Resource Descriptor.
@ -47,5 +46,3 @@ EFIAPI
PostFspiHobProcess (
IN VOID *FspHobList
);
#endif

View file

@ -6,8 +6,7 @@
**/
#ifndef __FSP_WRAPPER_MULTI_PHASE_PROCESS_LIB_H__
#define __FSP_WRAPPER_MULTI_PHASE_PROCESS_LIB_H__
#pragma once
/**
FSP Wrapper Variable Request Handler
@ -40,5 +39,3 @@ FspWrapperMultiPhaseHandler (
IN OUT VOID **FspHobListPtr,
IN UINT8 ComponentIndex
);
#endif

View file

@ -6,8 +6,7 @@
**/
#ifndef __FSP_WRAPPER_PLATFORM_LIB_H__
#define __FSP_WRAPPER_PLATFORM_LIB_H__
#pragma once
/**
This function overrides the default configurations in the FSP-M UPD data region.
@ -88,5 +87,3 @@ EFIAPI
UpdateFspiUpdData (
IN OUT VOID *FspUpdRgnPtr
);
#endif

View file

@ -6,8 +6,7 @@
**/
#ifndef FSP_WRAPPER_PLATFORM_MULTI_PHASE_LIB_H_
#define FSP_WRAPPER_PLATFORM_MULTI_PHASE_LIB_H_
#pragma once
/**
FSP Wrapper Platform MultiPhase Handler
@ -26,5 +25,3 @@ FspWrapperPlatformMultiPhaseHandler (
IN UINT8 ComponentIndex,
IN UINT32 PhaseIndex
);
#endif //FSP_WRAPPER_PLATFORM_MULTI_PHASE_LIB_H_

View file

@ -6,8 +6,7 @@
**/
#ifndef _FSP_SILICON_INIT_DONE_H_
#define _FSP_SILICON_INIT_DONE_H_
#pragma once
typedef struct _FSP_SILICON_INIT_DONE_PPI FSP_SILICON_INIT_DONE_PPI;
@ -33,5 +32,3 @@ struct _FSP_SILICON_INIT_DONE_PPI {
};
extern EFI_GUID gFspSiliconInitDonePpiGuid;
#endif

View file

@ -6,9 +6,6 @@
**/
#ifndef _TOP_OF_TEMPORARY_RAM_H_
#define _TOP_OF_TEMPORARY_RAM_H_
#pragma once
extern EFI_GUID gTopOfTemporaryRamPpiGuid;
#endif

View file

@ -6,8 +6,7 @@
**/
#ifndef __FSP_H__
#define __FSP_H__
#pragma once
//
// Fv Header
@ -41,5 +40,3 @@
//
#define FSP_HEADER_IMAGEBASE_OFFSET 0x1C
#define FSP_HEADER_TEMPRAMINIT_OFFSET 0x30
#endif