## @file
#  Sample PRM Driver
#
#  A sample PRM Module implementation. This PRM Module provides PRM handlers that perform various types
#  of hardware access. This is simply meant to demonstrate hardware access capabilities from a PRM handler.
#
#  Copyright (c) 2020, Intel Corporation. All rights reserved.<BR>
#  Copyright (c) Microsoft Corporation
#
#  SPDX-License-Identifier: BSD-2-Clause-Patent
#
##

[Defines]
  INF_VERSION                    = 0x00010005
  BASE_NAME                      = PrmSampleHardwareAccessModule
  FILE_GUID                      = 0EF93ED7-14AE-425B-928F-B85A6213B57E
  MODULE_TYPE                    = DXE_RUNTIME_DRIVER
  VERSION_STRING                 = 1.0
  ENTRY_POINT                    = PrmSampleHardwareAccessModuleInit

[Sources]
  Hpet.h
  PrmSampleHardwareAccessModule.c

[Packages]
  MdePkg/MdePkg.dec
  MdeModulePkg/MdeModulePkg.dec
  UefiCpuPkg/UefiCpuPkg.dec
  PrmPkg/PrmPkg.dec

[LibraryClasses]
  BaseLib
  MtrrLib
  UefiDriverEntryPoint
  UefiLib

[Depex]
  TRUE

[BuildOptions]
  MSFT:*_*_*_DLINK_FLAGS = /SUBSYSTEM:CONSOLE
  MSFT:*_*_*_GENFW_FLAGS = --keepoptionalheader --image-version $(VERSION_STRING)

  CLANGPDB:*_*_*_DLINK_FLAGS = /SUBSYSTEM:CONSOLE
  CLANGPDB:*_*_*_GENFW_FLAGS = --keepoptionalheader --image-version $(VERSION_STRING)

  GCC:*_*_*_GENFW_FLAGS = --prm --image-version $(VERSION_STRING)
  GCC:*_*_*_OBJCOPY_STRIPFLAG ==
