## @file
#  Sample PRM Driver
#
#  A sample PRM Module implementation. This PRM Module includes a PRM Module configuration library instance
#  that applies the configuration for the PRM context data in the boot environment. A PRM handler
#  is provided that accesses the context buffer resources and prints their value at OS runtime.
#
#  Copyright (c) 2020, Intel Corporation. All rights reserved.<BR>
#  Copyright (c) Microsoft Corporation
#  Copyright (c) 2022, Arm Limited. All rights reserved.<BR>
#  Copyright (C) 2025, Advanced Micro Devices, Inc. All rights reserved.
#
#  SPDX-License-Identifier: BSD-2-Clause-Patent
#
##

[Defines]
  INF_VERSION         = 0x00010005
  BASE_NAME           = PrmSampleContextBufferModule
  FILE_GUID           = 5A6CF42B-8BB4-472C-A233-5C4DC4033DC7
  MODULE_TYPE         = DXE_RUNTIME_DRIVER
  VERSION_STRING      = 1.0
  ENTRY_POINT         = PrmSampleContextBufferModuleInit

[Sources]
  Include/StaticData.h
  PrmSampleContextBufferModule.c

[Packages]
  MdePkg/MdePkg.dec
  MdeModulePkg/MdeModulePkg.dec
  UefiCpuPkg/UefiCpuPkg.dec
  PrmPkg/PrmPkg.dec

[LibraryClasses]
  BaseLib
  PrintLib
  UefiDriverEntryPoint
  UefiLib

[Depex]
  TRUE

[BuildOptions.common]
  MSFT:*_*_*_DLINK_FLAGS  = /DLL /SUBSYSTEM:CONSOLE /VERSION:1.0
  MSFT:*_*_*_GENFW_FLAGS = --keepoptionalheader

  GCC:*_*_*_GENFW_FLAGS = --keepoptionalheader --prm
  GCC:*_*_*_DLINK_FLAGS = -Wl,--no-gc-sections -Wl,--require-defined=PrmModuleExportDescriptor -Wl,--require-defined=CheckStaticDataBufferPrmHandler
  GCC:*_*_X64_OBJCOPY_STRIPFLAG = --keep-symbol=PrmModuleExportDescriptor --keep-symbol=CheckStaticDataBufferPrmHandler
