From 3eb9473ea9a949badfe06ae61d2d3fcfa53651c7 Mon Sep 17 00:00:00 2001 From: qwang12 Date: Thu, 28 Jun 2007 07:00:39 +0000 Subject: Add in the 1st version of ECP. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@2832 6f19259b-4bc3-4df7-8a09-765794883524 --- EdkCompatibilityPkg/Sample/Platform/Common.dsc | 1522 ++++++++++++++++++++ EdkCompatibilityPkg/Sample/Platform/CommonIa32.dsc | 558 +++++++ EdkCompatibilityPkg/Sample/Platform/CommonIpf.dsc | 391 +++++ EdkCompatibilityPkg/Sample/Platform/CommonX64.dsc | 558 +++++++ .../Sample/Platform/EdkIIGlueLib32.dsc | 39 + .../Sample/Platform/EdkIIGlueLibAll.dsc | 54 + EdkCompatibilityPkg/Sample/Platform/EdkLib32.dsc | 36 + EdkCompatibilityPkg/Sample/Platform/EdkLibAll.dsc | 63 + .../Platform/Nt32/Protocol/EdkNt32ProtocolLib.inf | 46 + .../Platform/Nt32/Protocol/WinNtIo/WinNtIo.c | 40 + .../Platform/Nt32/Protocol/WinNtIo/WinNtIo.h | 163 +++ .../Platform/Nt32/Protocol/WinNtThunk/WinNtThunk.c | 28 + .../Platform/Nt32/Protocol/WinNtThunk/WinNtThunk.h | 1276 ++++++++++++++++ 13 files changed, 4774 insertions(+) create mode 100644 EdkCompatibilityPkg/Sample/Platform/Common.dsc create mode 100644 EdkCompatibilityPkg/Sample/Platform/CommonIa32.dsc create mode 100644 EdkCompatibilityPkg/Sample/Platform/CommonIpf.dsc create mode 100644 EdkCompatibilityPkg/Sample/Platform/CommonX64.dsc create mode 100644 EdkCompatibilityPkg/Sample/Platform/EdkIIGlueLib32.dsc create mode 100644 EdkCompatibilityPkg/Sample/Platform/EdkIIGlueLibAll.dsc create mode 100644 EdkCompatibilityPkg/Sample/Platform/EdkLib32.dsc create mode 100644 EdkCompatibilityPkg/Sample/Platform/EdkLibAll.dsc create mode 100644 EdkCompatibilityPkg/Sample/Platform/Nt32/Protocol/EdkNt32ProtocolLib.inf create mode 100644 EdkCompatibilityPkg/Sample/Platform/Nt32/Protocol/WinNtIo/WinNtIo.c create mode 100644 EdkCompatibilityPkg/Sample/Platform/Nt32/Protocol/WinNtIo/WinNtIo.h create mode 100644 EdkCompatibilityPkg/Sample/Platform/Nt32/Protocol/WinNtThunk/WinNtThunk.c create mode 100644 EdkCompatibilityPkg/Sample/Platform/Nt32/Protocol/WinNtThunk/WinNtThunk.h (limited to 'EdkCompatibilityPkg/Sample/Platform') diff --git a/EdkCompatibilityPkg/Sample/Platform/Common.dsc b/EdkCompatibilityPkg/Sample/Platform/Common.dsc new file mode 100644 index 0000000000..c40c4e7de8 --- /dev/null +++ b/EdkCompatibilityPkg/Sample/Platform/Common.dsc @@ -0,0 +1,1522 @@ +#/*++ +# +# Copyright (c) 2004 - 2007, Intel Corporation +# All rights reserved. This program and the accompanying materials +# are licensed and made available under the terms and conditions of the BSD License +# which accompanies this distribution. The full text of the license may be found at +# http://opensource.org/licenses/bsd-license.php +# +# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +# +# Module Name: +# +# Common.dsc +# +# Abstract: +# +# This is the build description file containing the platform +# independent build instructions. Platform specific instructions will +# be prepended to produce the final build DSC file. +# +# +# Notes: +# +# The info in this file is broken down into sections. The start of a section +# is designated by a "[" in the first column. So the [=====] separater ends +# a section. +# +#--*/ + +[=============================================================================] +# +# These get emitted at the top of the generated master makefile. +# +[=============================================================================] +[Makefile.out] +# +# From the [makefile.out] section of the DSC file +# +TOOLCHAIN = +MAKE = nmake -nologo + +!INCLUDE $(BUILD_DIR)\PlatformTools.env + +all : libraries fvs + +[=============================================================================] +# +# These get expanded and dumped out to each component makefile after the +# component INF [defines] section gets parsed. +# +[=============================================================================] +[Makefile.Common] +# +# From the [Makefile.Common] section of the description file. +# +PROCESSOR = $(PROCESSOR) +BASE_NAME = $(BASE_NAME) +BUILD_NUMBER = $(BUILD_NUMBER) +VERSION_STRING = $(VERSION_STRING) +TOOLCHAIN = TOOLCHAIN_$(PROCESSOR) +FILE_GUID = $(FILE_GUID) +COMPONENT_TYPE = $(COMPONENT_TYPE) +FV_DIR = $(BUILD_DIR)\FV +PLATFORM = $(PROJECT_NAME) + +# +# Define the global dependency files +# +!IF EXIST ($(DEST_DIR)\$(BASE_NAME)StrDefs.h) +INC_DEPS = $(INC_DEPS) $(DEST_DIR)\$(BASE_NAME)StrDefs.h +!ENDIF +#ENV_DEPS = $(ENV_DEPS) $(EDK_SOURCE)\Sample\CommonTools.env +#ENV_DEPS = $(ENV_DEPS) $(BUILD_DIR)\PlatformTools.env +#ENV_DEPS = $(ENV_DEPS) $(BUILD_DIR)\Config.env +ALL_DEPS = $(INC_DEPS) $(ENV_DEPS) + +!IF "$(LANGUAGE)" != "" +LANGUAGE_FLAGS = -lang $(LANGUAGE) +!ENDIF + +!INCLUDE $(BUILD_DIR)\PlatformTools.env + +!IF "$(COMPONENT_TYPE)" == "PIC_PEIM" || "$(COMPONENT_TYPE)" == "PE32_PEIM" || "$(COMPONENT_TYPE)" == "RELOCATABLE_PEIM" || "$(COMPONENT_TYPE)" == "COMBINED_PEIM_DRIVER" +DEPEX_TYPE = EFI_SECTION_PEI_DEPEX +!ELSE +DEPEX_TYPE = EFI_SECTION_DXE_DEPEX +!ENDIF + +# +# Command flags for MAKEDEPS tool +# +DEP_FLAGS = -target $** -o $(DEP_FILE) $(INC) -ignorenotfound -q + +[=============================================================================] +# +# These are the commands to compile source files. One of these blocks gets +# emitted to the component's makefile for each source file. The section +# name is encoded as [Compile.$(PROCESSOR).source_filename_extension], where +# the source filename comes from the sources section of the component INF file. +# +# If the dependency list file already exists, then include it for this +# source file. If it doesn't exist, then this is a clean build and the +# dependency file will get created below and the source file will get +# compiled. +# +# Current behavior is that the first clean build will not create dep files. +# But the following second build has to create dep files before build source files. +# CREATEDEPS flag is used to judge whether current build is the second build or not. +# +# +[=============================================================================] +[Compile.Ia32.asm,Compile.x64.asm] + +DEP_FILE = $(DEST_DIR)\$(FILE)Asm.dep + +!IF EXIST($(DEST_DIR)\$(FILE).obj) +DEP_TARGETS = $(DEP_TARGETS) $(DEST_DIR)\$(FILE)Asm.dep +!IF !EXIST($(DEP_FILE)) +CREATEDEPS = YES +!ENDIF +!ENDIF + +!IF EXIST($(DEP_FILE)) +!INCLUDE $(DEP_FILE) +!ENDIF + +# +# Update dep file for next round incremental build +# +$(DEP_FILE) : $(DEST_DIR)\$(FILE).obj + $(MAKEDEPS) -f $(SOURCE_FILE_NAME) $(DEP_FLAGS) -asm + +# +# Compile the file +# +$(DEST_DIR)\$(FILE).obj : $(SOURCE_FILE_NAME) $(INF_FILENAME) $(ALL_DEPS) + $(ASM) $(ASM_FLAGS) $(SOURCE_FILE_NAME) + +[=============================================================================] +[Compile.Ipf.s] + +DEP_FILE = $(DEST_DIR)\$(FILE)S.dep + +!IF EXIST($(DEST_DIR)\$(FILE).pro) +DEP_TARGETS = $(DEP_TARGETS) $(DEST_DIR)\$(FILE)S.dep +!IF !EXIST($(DEP_FILE)) +CREATEDEPS = YES +!ENDIF +!ENDIF + +!IF EXIST($(DEP_FILE)) +!INCLUDE $(DEP_FILE) +!ENDIF + +# +# Update dep file for next round incremental build +# +$(DEP_FILE) : $(DEST_DIR)\$(FILE).pro + $(MAKEDEPS) -f $(SOURCE_FILE_NAME) $(DEP_FLAGS) + +# +# Compile the file +# +$(DEST_DIR)\$(FILE).pro : $(SOURCE_FILE_NAME) $(INF_FILENAME) $(ALL_DEPS) + $(CC) $(C_FLAGS_PRO) $(SOURCE_FILE_NAME) > $@ + +$(DEST_DIR)\$(FILE).obj : $(DEST_DIR)\$(FILE).pro + $(ASM) $(ASM_FLAGS) $(DEST_DIR)\$(FILE).pro + +[=============================================================================] +[Compile.Ia32.c,Compile.Ipf.c,Compile.x64.c] + +DEP_FILE = $(DEST_DIR)\$(FILE).dep + +!IF EXIST($(DEST_DIR)\$(FILE).obj) +DEP_TARGETS = $(DEP_TARGETS) $(DEST_DIR)\$(FILE).dep +!IF !EXIST($(DEP_FILE)) +CREATEDEPS = YES +!ENDIF +!ENDIF + +!IF EXIST($(DEP_FILE)) +!INCLUDE $(DEP_FILE) +!ENDIF + +# +# Update dep file for next round incremental build +# +$(DEP_FILE) : $(DEST_DIR)\$(FILE).obj + $(MAKEDEPS) -f $(SOURCE_FILE_NAME) $(DEP_FLAGS) + +# +# Compile the file +# +$(DEST_DIR)\$(FILE).obj : $(SOURCE_FILE_NAME) $(INF_FILENAME) $(ALL_DEPS) + $(CC) $(C_FLAGS) $(SOURCE_FILE_NAME) + +[=============================================================================] +[Compile.Ebc.c] + +DEP_FILE = $(DEST_DIR)\$(FILE).dep + +!IF EXIST($(DEST_DIR)\$(FILE).obj) +DEP_TARGETS = $(DEP_TARGETS) $(DEST_DIR)\$(FILE).dep +!IF !EXIST($(DEP_FILE)) +CREATEDEPS = YES +!ENDIF +!ENDIF + +!IF EXIST($(DEP_FILE)) +!INCLUDE $(DEP_FILE) +!ENDIF + +# +# Update dep file for next round incremental build +# +$(DEP_FILE) : $(DEST_DIR)\$(FILE).obj + $(MAKEDEPS) -f $(SOURCE_FILE_NAME) $(DEP_FLAGS) + +# +# Compile the file +# +$(DEST_DIR)\$(FILE).obj : $(SOURCE_FILE_NAME) $(INF_FILENAME) $(ALL_DEPS) + $(EBC_CC) $(EBC_C_FLAGS) $(SOURCE_FILE_NAME) + +[=============================================================================] +# +# Commands for compiling a ".apr" Apriori source file. +# +[=============================================================================] +[Compile.Ia32.Apr,Compile.Ipf.Apr,Compile.Ebc.Apr,Compile.x64.Apr] +# +# Create the raw binary file. If you get an error on the build saying it doesn't +# know how to create the .apr file, then you're missing (or mispelled) the +# "APRIORI=" on the component lines in components section in the DSC file. +# +$(DEST_DIR)\$(BASE_NAME).bin : $(SOURCE_FILE_NAME) + $(GENAPRIORI) -v -f $(SOURCE_FILE_NAME) -o $(DEST_DIR)\$(BASE_NAME).bin + +$(DEST_DIR)\$(BASE_NAME).sec : $(DEST_DIR)\$(BASE_NAME).bin + $(GENSECTION) -I $(DEST_DIR)\$(BASE_NAME).bin -O $(DEST_DIR)\$(BASE_NAME).sec -S EFI_SECTION_RAW + +[=============================================================================] +[Build.Ia32.Apriori,Build.Ipf.Apriori,Build.Ebc.Apriori,Build.x64.Apriori] + +all : $(BIN_DIR)\$(FILE_GUID)-$(BASE_NAME).FFS + +# +# Run GenFfsFile on the package file and .raw file to create the firmware file +# +$(BIN_DIR)\$(FILE_GUID)-$(BASE_NAME).FFS : $(DEST_DIR)\$(BASE_NAME).sec $(PACKAGE_FILENAME) + $(GENFFSFILE) -B $(DEST_DIR) -P1 $(PACKAGE_FILENAME) -V + +# +# Remove the generated temp and final files for this modules. +# +clean : +!IF ("$(FILE_GUID)" != "") + @if exist $(BIN_DIR)\$(FILE_GUID)-$(BASE_NAME).* del $(BIN_DIR)\$(FILE_GUID)-$(BASE_NAME).* +!ENDIF + @if exist $(BIN_DIR)\$(BASE_NAME).* del $(BIN_DIR)\$(BASE_NAME).* + @del /q $(DEST_OUTPUT_DIRS) + +[=============================================================================] +[Build.Ia32.Makefile,Build.Ipf.Makefile,Build.Ebc.Makefile,Build.x64.Makefile] + +# +# Copy the makefile directly from the source directory, then make it +# writable so we can copy over it later if we try to. +# +$(DEST_DIR)\makefile.new : $(SOURCE_DIR)\makefile.new + copy $(SOURCE_DIR)\makefile.new $(DEST_DIR)\makefile.new + attrib -r $(DEST_DIR)\makefile.new + +# +# Make the all target, set some required macros. +# +call_makefile : + $(MAKE) -f $(DEST_DIR)\makefile.new all \ + SOURCE_DIR=$(SOURCE_DIR) \ + BUILD_DIR=$(BUILD_DIR) \ + FILE_GUID=$(FILE_GUID) \ + DEST_DIR=$(DEST_DIR) \ + PROCESSOR=$(PROCESSOR) \ + TOOLCHAIN=TOOLCHAIN_$(PROCESSOR) \ + BASE_NAME=$(BASE_NAME) \ + PACKAGE_FILENAME=$(PACKAGE_FILENAME) + +all : $(DEST_DIR)\makefile.new call_makefile + +# +# Remove the generated temp and final files for this modules. +# +clean : + @- $(MAKE) -f $(DEST_DIR)\makefile.new clean > NUL 2>&1 +!IF ("$(FILE_GUID)" != "") + @if exist $(BIN_DIR)\$(FILE_GUID)-$(BASE_NAME).* del $(BIN_DIR)\$(FILE_GUID)-$(BASE_NAME).* +!ENDIF + @if exist $(BIN_DIR)\$(BASE_NAME).* del $(BIN_DIR)\$(BASE_NAME).* + @del /q $(DEST_OUTPUT_DIRS) + +[=============================================================================] +# +# Instructions for building a component that uses a custom makefile. Encoding +# is [build.$(PROCESSOR).$(BUILD_TYPE)]. +# +# To build these components, simply call the makefile from the source +# directory. +# +[=============================================================================] +[Build.Ia32.Custom_Makefile,Build.Ipf.Custom_Makefile,Build.Ebc.Custom_Makefile,Build.x64.Custom_Makefile] + +# +# Just call the makefile from the source directory, passing in some +# useful info. +# +all : + $(MAKE) -f $(SOURCE_DIR)\makefile all \ + SOURCE_DIR=$(SOURCE_DIR) \ + BUILD_DIR=$(BUILD_DIR) \ + DEST_DIR=$(DEST_DIR) \ + FILE_GUID=$(FILE_GUID) \ + PROCESSOR=$(PROCESSOR) \ + TOOLCHAIN=TOOLCHAIN_$(PROCESSOR) \ + BASE_NAME=$(BASE_NAME) \ + PLATFORM=$(PLATFORM) \ + SOURCE_FV=$(SOURCE_FV) \ + PACKAGE_FILENAME=$(PACKAGE_FILENAME) + +# +# Remove the generated temp and final files for this modules. +# +clean : + @- $(MAKE) -f $(SOURCE_DIR)\makefile clean > NUL 2>&1 +!IF ("$(FILE_GUID)" != "") + @if exist $(BIN_DIR)\$(FILE_GUID)-$(BASE_NAME).* del $(BIN_DIR)\$(FILE_GUID)-$(BASE_NAME).* +!ENDIF + @if exist $(BIN_DIR)\$(BASE_NAME).* del $(BIN_DIR)\$(BASE_NAME).* + @del /q $(DEST_OUTPUT_DIRS) + +[=============================================================================] +# +# These commands are used to build libraries +# +[=============================================================================] +[Build.Ia32.LIBRARY,Build.Ipf.LIBRARY,Build.x64.LIBRARY] +# +# LIB all the object files into to our target lib file. Put +# a dependency on the component's INF file in case it changes. +# +LIB_NAME = $(LIB_DIR)\$(BASE_NAME).lib + +$(LIB_NAME) : $(OBJECTS) $(LIBS) $(INF_FILENAME) $(ENV_DEPS) + $(LIB) $(LIB_FLAGS) $(OBJECTS) $(LIBS) /OUT:$@ + +!IF "$(CREATEDEPS)"=="YES" +all : $(DEP_TARGETS) + $(MAKE) -f $(MAKEFILE_NAME) all +!ELSE +all : $(LIB_NAME) $(DEP_TARGETS) +!ENDIF + +# +# Remove the generated temp and final files for this modules. +# +clean : +!IF ("$(FILE_GUID)" != "") + @if exist $(BIN_DIR)\$(FILE_GUID)-$(BASE_NAME).* del $(BIN_DIR)\$(FILE_GUID)-$(BASE_NAME).* +!ENDIF + @if exist $(BIN_DIR)\$(BASE_NAME).* del $(BIN_DIR)\$(BASE_NAME).* + @del /q $(DEST_OUTPUT_DIRS) + +[=============================================================================] +[Build.Ebc.LIBRARY] +# +# LIB all the object files into to our target lib file. Put +# a dependency on the component's INF file in case it changes. +# +LIB_NAME = $(LIB_DIR)\$(BASE_NAME).lib + +$(LIB_NAME) : $(OBJECTS) $(LIBS) $(INF_FILENAME) $(ENV_DEPS) + $(EBC_LIB) $(EBC_LIB_FLAGS) $(OBJECTS) $(LIBS) /OUT:$@ + +!IF "$(CREATEDEPS)"=="YES" +all : $(DEP_TARGETS) + $(MAKE) -f $(MAKEFILE_NAME) all +!ELSE +all : $(LIB_NAME) $(DEP_TARGETS) +!ENDIF + +# +# Remove the generated temp and final files for this modules. +# +clean : +!IF ("$(FILE_GUID)" != "") + @if exist $(BIN_DIR)\$(FILE_GUID)-$(BASE_NAME).* del $(BIN_DIR)\$(FILE_GUID)-$(BASE_NAME).* +!ENDIF + @if exist $(BIN_DIR)\$(BASE_NAME).* del $(BIN_DIR)\$(BASE_NAME).* + @del /q $(DEST_OUTPUT_DIRS) + +[=============================================================================] +# +# This is the Build.$(PROCESSOR).$(COMPONENT_TYPE) section that tells how to +# convert a firmware volume into an FV FFS file. Simply run it through +# GenFfsFile with the appropriate package file. SOURCE_FV must be defined +# in the component INF file Defines section. +# +[=============================================================================] +[Build.Ia32.FvImageFile,Build.x64.FvImageFile,Build.Ipf.FvImageFile] + +all : $(BIN_DIR)\$(FILE_GUID)-$(BASE_NAME).Fvi + +# +# Run GenFfsFile on the package file and FV file to create the firmware +# volume FFS file. This FFS file maybe contain one pad section for alignment requirement. +# +$(BIN_DIR)\$(FILE_GUID)-$(BASE_NAME).Fvi : $(DEST_DIR)\$(SOURCE_FV)Fv.sec $(PACKAGE_FILENAME) $(PAD_SECTION) + $(GENFFSFILE) -B $(DEST_DIR) -P1 $(PACKAGE_FILENAME) -V + +# +# Remove the generated temp and final files for this modules. +# +clean : +!IF ("$(FILE_GUID)" != "") + @if exist $(BIN_DIR)\$(FILE_GUID)-$(BASE_NAME).* del $(BIN_DIR)\$(FILE_GUID)-$(BASE_NAME).* +!ENDIF + @if exist $(BIN_DIR)\$(BASE_NAME).* del $(BIN_DIR)\$(BASE_NAME).* + @del /q $(DEST_OUTPUT_DIRS) + +[=============================================================================] +# +# Since many of the steps are the same for the different component types, we +# share this section for BS_DRIVER, RT_DRIVER, .... and IFDEF the parts that +# differ. The entire section gets dumped to the output makefile. +# +[=============================================================================] +[Build.Ia32.BS_DRIVER|RT_DRIVER|SAL_RT_DRIVER|PE32_PEIM|PEI_CORE|PIC_PEIM|RELOCATABLE_PEIM|DXE_CORE|APPLICATION|COMBINED_PEIM_DRIVER, Build.Ipf.BS_DRIVER|RT_DRIVER|SAL_RT_DRIVER|PEI_CORE|PE32_PEIM|PIC_PEIM|DXE_CORE|APPLICATION|COMBINED_PEIM_DRIVER, Build.x64.BS_DRIVER|RT_DRIVER|SAL_RT_DRIVER|PE32_PEIM|PEI_CORE|PIC_PEIM|RELOCATABLE_PEIM|DXE_CORE|APPLICATION|COMBINED_PEIM_DRIVER] + +!IF "$(LOCALIZE)" == "YES" + +!IF "$(EFI_GENERATE_HII_EXPORT)" == "YES" +STRGATHER_FLAGS = $(STRGATHER_FLAGS) -hpk $(DEST_DIR)\$(BASE_NAME)Strings.hpk + +# +# There will be one HII pack containing all the strings. Add that file +# to the list of HII pack files we'll use to create our final HII export file. +# +HII_PACK_FILES = $(HII_PACK_FILES) $(DEST_DIR)\$(BASE_NAME)Strings.hpk +LOCALIZE_TARGETS = $(LOCALIZE_TARGETS) $(DEST_DIR)\$(BASE_NAME).hii +!ENDIF + +$(DEST_DIR)\$(BASE_NAME).sdb : $(SDB_FILES) $(SOURCE_FILES) + $(STRGATHER) -scan -vdbr $(STRGATHER_FLAGS) -od $(DEST_DIR)\$(BASE_NAME).sdb \ + -skipext .uni -skipext .h $(SOURCE_FILES) + +$(DEST_DIR)\$(BASE_NAME)Strings.c : $(DEST_DIR)\$(BASE_NAME).sdb + $(STRGATHER) -dump $(LANGUAGE_FLAGS) -bn $(BASE_NAME)Strings -db $(DEST_DIR)\$(BASE_NAME).sdb \ + -oc $(DEST_DIR)\$(BASE_NAME)Strings.c + +$(DEST_DIR)\$(BASE_NAME)StrDefs.h : $(DEST_DIR)\$(BASE_NAME).sdb + $(STRGATHER) -dump $(LANGUAGE_FLAGS) -bn $(BASE_NAME)Strings -db $(DEST_DIR)\$(BASE_NAME).sdb \ + -oh $(DEST_DIR)\$(BASE_NAME)StrDefs.h + +$(DEST_DIR)\$(BASE_NAME)Strings.hpk : $(DEST_DIR)\$(BASE_NAME).sdb + $(STRGATHER) -dump $(LANGUAGE_FLAGS) -bn $(BASE_NAME)Strings -db $(DEST_DIR)\$(BASE_NAME).sdb \ + -hpk $(DEST_DIR)\$(BASE_NAME)Strings.hpk + +OBJECTS = $(OBJECTS) $(DEST_DIR)\$(BASE_NAME)Strings.obj + +$(DEST_DIR)\$(BASE_NAME)Strings.obj : $(DEST_DIR)\$(BASE_NAME)Strings.c $(INF_FILENAME) $(ALL_DEPS) + $(CC) $(C_FLAGS) $(DEST_DIR)\$(BASE_NAME)Strings.c + +LOCALIZE_TARGETS = $(LOCALIZE_TARGETS) $(DEST_DIR)\$(BASE_NAME)StrDefs.h + +!ENDIF + +# +# If we have any objects associated with this component, then we're +# going to build a local library from them. +# +!IFNDEF OBJECTS +!ERROR No source files to build were defined in the INF file +!ENDIF + +TARGET_LOCAL_LIB = $(DEST_DIR)\$(BASE_NAME)Local.lib + +# +# LIB all the object files into our (local) target lib file. Put +# a dependency on the component's INF file in case it changes. +# +$(TARGET_LOCAL_LIB) : $(OBJECTS) $(INF_FILENAME) $(ENV_DEPS) + $(LIB) $(LIB_FLAGS) $(OBJECTS) /OUT:$@ + +# +# Defines for standard intermediate files and build targets +# +TARGET_DLL = $(BIN_DIR)\$(BASE_NAME).dll +TARGET_EFI = $(BIN_DIR)\$(BASE_NAME).efi +TARGET_DPX = $(DEST_DIR)\$(BASE_NAME).dpx +TARGET_UI = $(DEST_DIR)\$(BASE_NAME).ui +TARGET_VER = $(DEST_DIR)\$(BASE_NAME).ver +TARGET_MAP = $(BIN_DIR)\$(BASE_NAME).map +TARGET_PDB = $(BIN_DIR)\$(BASE_NAME).pdb +TARGET_SYM = $(BIN_DIR)\$(BASE_NAME).sym + +# +# Target executable section extension depends on the component type. +# Only define "TARGET_DXE_DPX" if it's a combined peim driver. +# +!IF "$(COMPONENT_TYPE)" == "PIC_PEIM" +TARGET_PE32 = $(DEST_DIR)\$(BASE_NAME).pic +!ELSE +TARGET_PE32 = $(DEST_DIR)\$(BASE_NAME).pe32 +!ENDIF + +# +# Target FFS file extension depends on the component type +# Also define "TARGET_DXE_DPX" if it's a combined PEIM driver. +# +SUBSYSTEM = EFI_BOOT_SERVICE_DRIVER + +!IF "$(COMPONENT_TYPE)" == "APPLICATION" +TARGET_FFS_FILE = $(BIN_DIR)\$(FILE_GUID)-$(BASE_NAME).app +SUBSYSTEM = EFI_APPLICATION +!ELSE IF "$(COMPONENT_TYPE)" == "PEI_CORE" +TARGET_FFS_FILE = $(BIN_DIR)\$(FILE_GUID)-$(BASE_NAME).pei +!ELSE IF "$(COMPONENT_TYPE)" == "PE32_PEIM" +TARGET_FFS_FILE = $(BIN_DIR)\$(FILE_GUID)-$(BASE_NAME).pei +!ELSE IF "$(COMPONENT_TYPE)" == "RELOCATABLE_PEIM" +TARGET_FFS_FILE = $(BIN_DIR)\$(FILE_GUID)-$(BASE_NAME).pei +!ELSE IF "$(COMPONENT_TYPE)" == "PIC_PEIM" +TARGET_FFS_FILE = $(BIN_DIR)\$(FILE_GUID)-$(BASE_NAME).pei +!ELSE IF "$(COMPONENT_TYPE)" == "COMBINED_PEIM_DRIVER" +TARGET_FFS_FILE = $(BIN_DIR)\$(FILE_GUID)-$(BASE_NAME).pei +TARGET_DXE_DPX = $(DEST_DIR)\$(BASE_NAME).dpxd +!ELSE +TARGET_FFS_FILE = $(BIN_DIR)\$(FILE_GUID)-$(BASE_NAME).dxe +!ENDIF + +# +# Different methods to build section based on if PIC_PEIM +# +!IF "$(COMPONENT_TYPE)" == "PIC_PEIM" + +$(TARGET_PE32) : $(TARGET_DLL) + $(PE2BIN) $(TARGET_DLL) $(DEST_DIR)\$(BASE_NAME).TMP +# +# BUGBUG: Build PEIM header, needs to go away with new PEI. +# + $(TEMPGENSECTION) -P $(SOURCE_DIR)\$(BASE_NAME).INF -I $(DEST_DIR)\$(BASE_NAME).TMP -O $(TARGET_PIC_PEI).tmp -M $(TARGET_MAP) -S EFI_SECTION_TYPE_NO_HEADER + $(GENSECTION) -I $(TARGET_PIC_PEI).tmp -O $(TARGET_PE32) -S EFI_SECTION_PIC + del $(DEST_DIR)\$(BASE_NAME).TMP + +!ELSE + +$(TARGET_PE32) : $(TARGET_EFI) + $(GENSECTION) -I $(TARGET_EFI) -O $(TARGET_PE32) -S EFI_SECTION_PE32 + +# +# Run FWImage on the DLL to set it as an EFI image type. +# +$(TARGET_EFI) : $(TARGET_DLL) $(INF_FILENAME) + $(FWIMAGE) -t 0 $(COMPONENT_TYPE) $(TARGET_DLL) $(TARGET_EFI) + +!ENDIF + +# +# Link all objects and libs to create the executable +# +$(TARGET_DLL) : $(TARGET_LOCAL_LIB) $(LIBS) $(INF_FILENAME) $(ENV_DEPS) + $(LINK) $(LINK_FLAGS_DLL) $(LIBS) /ENTRY:$(IMAGE_ENTRY_POINT) \ + $(TARGET_LOCAL_LIB) /OUT:$(TARGET_DLL) /MAP:$(TARGET_MAP) \ + /PDB:$(TARGET_PDB) + $(SETSTAMP) $(TARGET_DLL) $(BUILD_DIR)\GenStamp.txt +!IF "$(EFI_GENERATE_SYM_FILE)" == "YES" + if exist $(TARGET_PDB) $(PE2SYM) $(TARGET_PDB) $(TARGET_SYM) +!ENDIF + +!IF "$(EFI_ZERO_DEBUG_DATA)" == "YES" + $(ZERODEBUGDATA) $(TARGET_DLL) +!ENDIF + +# +# Create the user interface section +# +$(TARGET_UI) : $(INF_FILENAME) + $(GENSECTION) -O $(TARGET_UI) -S EFI_SECTION_USER_INTERFACE -A "$(BASE_NAME)" + +# +# Create the version section +# +!IF "$(BUILD_NUMBER)" != "" +!IF "$(VERSION_STRING)" != "" +$(TARGET_VER) : $(INF_FILENAME) + $(GENSECTION) -O $(TARGET_VER) -S EFI_SECTION_VERSION -V $(BUILD_NUMBER) -A "$(VERSION_STRING)" +!ELSE +$(TARGET_VER) : $(INF_FILENAME) + $(GENSECTION) -O $(TARGET_VER) -S EFI_SECTION_VERSION -V $(BUILD_NUMBER) +!ENDIF +!ELSE +$(TARGET_VER) : + echo.>$(TARGET_VER) + type $(TARGET_VER)>$(TARGET_VER) +!ENDIF + +# +# Makefile entries to create the dependency expression section. +# Use the DPX file from the source directory unless an override file +# was specified. +# If no DPX source file was specified, then create an empty file to +# be used. +# +!IF "$(DPX_SOURCE)" != "" +DPX_SOURCE_FILE = $(SOURCE_DIR)\$(DPX_SOURCE) +!ENDIF + +!IF "$(DPX_SOURCE_OVERRIDE)" != "" +DPX_SOURCE_FILE = $(DPX_SOURCE_OVERRIDE) +!ENDIF + +!IF "$(DPX_SOURCE_FILE)" != "" +!IF EXIST ($(DPX_SOURCE_FILE)) +# +# Add dependency check for dxs file, because dxs file depends on PPI or +# PROTOCOL guid defintions. +# +DEP_FILE = $(DEST_DIR)\$(BASE_NAME)dxs.dep + +!IF EXIST($(TARGET_DPX)) +DEP_TARGETS = $(DEP_TARGETS) $(DEST_DIR)\$(BASE_NAME)dxs.dep +!IF !EXIST($(DEP_FILE)) +CREATEDEPS = YES +!ENDIF +!ENDIF + +!IF EXIST($(DEP_FILE)) +!INCLUDE $(DEP_FILE) +!ENDIF +# +# Update dep file for next round incremental build +# +$(DEP_FILE) : $(TARGET_DPX) + $(MAKEDEPS) -f $(DPX_SOURCE_FILE) $(DEP_FLAGS) + +$(TARGET_DPX) : $(DPX_SOURCE_FILE) $(INF_FILENAME) + $(CC) /nologo $(INC) $(VERSION_FLAGS) /EP $(DPX_SOURCE_FILE) > $*.tmp1 + $(GENDEPEX) -I $*.tmp1 -O $*.tmp2 + $(GENSECTION) -I $*.tmp2 -O $@ -S $(DEPEX_TYPE) + del $*.tmp1 > NUL + del $*.tmp2 > NUL +!ELSE +!ERROR Dependency expression source file "$(DPX_SOURCE_FILE)" does not exist. +!ENDIF +!ELSE +$(TARGET_DPX) : + echo. > $(TARGET_DPX) + type $(TARGET_DPX) > $(TARGET_DPX) +!ENDIF + +# +# Makefile entries for DXE DPX for combined PEIM drivers. +# If a DXE_DPX_SOURCE file was specified in the INF file, use it. Otherwise +# create an empty file and use it as a DPX file. +# +!IF "$(COMPONENT_TYPE)" == "COMBINED_PEIM_DRIVER" +!IF "$(DXE_DPX_SOURCE)" != "" +!IF EXIST ($(SOURCE_DIR)\$(DXE_DPX_SOURCE)) +$(TARGET_DXE_DPX) : $(SOURCE_DIR)\$(DXE_DPX_SOURCE) $(INF_FILENAME) + $(CC) /nologo $(INC) $(VERSION_FLAGS) /EP $(SOURCE_DIR)\$(DXE_DPX_SOURCE) > $*.tmp1 + $(GENDEPEX) -I $*.tmp1 -O $*.tmp2 + $(GENSECTION) -I $*.tmp2 -O $@ -S EFI_SECTION_DXE_DEPEX + del $*.tmp1 > NUL + del $*.tmp2 > NUL +!ELSE +!ERROR Dependency expression source file "$(SOURCE_DIR)\$(DXE_DPX_SOURCE)" does not exist. +!ENDIF +!ELSE +$(TARGET_DXE_DPX) : + echo. > $(TARGET_DXE_DPX) + type $(TARGET_DXE_DPX) > $(TARGET_DXE_DPX) +!ENDIF +!ENDIF + +# +# Describe how to build the HII export file from all the input HII pack files. +# Use the FFS file GUID for the package GUID in the export file. Only used +# when multiple VFR share strings. +# +$(DEST_DIR)\$(BASE_NAME).hii : $(HII_PACK_FILES) + $(HIIPACK) create -g $(FILE_GUID) -p $(HII_PACK_FILES) -o $(DEST_DIR)\$(BASE_NAME).hii + +# +# If the build calls for creating an FFS file with the IFR included as +# a separate binary (not compiled into the driver), then build the binary +# section now. Note that the PACKAGE must be set correctly to actually get +# this IFR section pulled into the FFS file. +# +!IF ("$(HII_IFR_PACK_FILES)" != "") + +$(DEST_DIR)\$(BASE_NAME)IfrBin.sec : $(HII_IFR_PACK_FILES) + $(HIIPACK) create -novarpacks -p $(HII_IFR_PACK_FILES) -o $(DEST_DIR)\$(BASE_NAME)IfrBin.hii + $(GENSECTION) -I $(DEST_DIR)\$(BASE_NAME)IfrBin.hii -O $(DEST_DIR)\$(BASE_NAME)IfrBin.sec -S EFI_SECTION_RAW + +BIN_TARGETS = $(BIN_TARGETS) $(DEST_DIR)\$(BASE_NAME)IfrBin.sec + +!ENDIF + +# +# Build a FFS file from the sections and package +# +$(TARGET_FFS_FILE) : $(TARGET_PE32) $(TARGET_DPX) $(TARGET_UI) $(TARGET_VER) $(TARGET_DXE_DPX) $(PACKAGE_FILENAME) +# +# Some of our components require padding to align code +# +!IF "$(PROCESSOR)" == "IPF" +!IF "$(COMPONENT_TYPE)" == "PIC_PEIM" || "$(COMPONENT_TYPE)" == "PE32_PEIM" || "$(COMPONENT_TYPE)" == "RELOCATABLE_PEIM" || "$(COMPONENT_TYPE)" == "SECURITY_CORE" || "$(COMPONENT_TYPE)" == "PEI_CORE" || "$(COMPONENT_TYPE)" == "COMBINED_PEIM_DRIVER" + copy $(BIN_DIR)\Blank.pad $(DEST_DIR) +!ENDIF +!ENDIF + $(GENFFSFILE) -B $(DEST_DIR) -P1 $(PACKAGE_FILENAME) -V + +!IF "$(CREATEDEPS)"=="YES" +all : $(DEP_TARGETS) + $(MAKE) -f $(MAKEFILE_NAME) all +!ELSE +all : $(LOCALIZE_TARGETS) $(BIN_TARGETS) $(TARGET_FFS_FILE) $(DEP_TARGETS) +!ENDIF + +# +# Remove the generated temp and final files for this modules. +# +clean : +!IF ("$(FILE_GUID)" != "") + @if exist $(BIN_DIR)\$(FILE_GUID)-$(BASE_NAME).* del $(BIN_DIR)\$(FILE_GUID)-$(BASE_NAME).* +!ENDIF + @if exist $(BIN_DIR)\$(BASE_NAME).* del $(BIN_DIR)\$(BASE_NAME).* + @del /q $(DEST_OUTPUT_DIRS) + +[=============================================================================] +[Build.Ia32.TE_PEIM,Build.Ipf.TE_PEIM,Build.x64.TE_PEIM] +# +# Define the library file we'll build if we have any objects defined. +# +!IFDEF OBJECTS +TARGET_LOCAL_LIB = $(DEST_DIR)\$(BASE_NAME)Local.lib +# +# LIB all the object files into our (local) target lib file. Put +# a dependency on the component's INF file in case it changes. +# +$(TARGET_LOCAL_LIB) : $(OBJECTS) $(INF_FILENAME) $(ENV_DEPS) + $(LIB) $(LIB_FLAGS) $(OBJECTS) /OUT:$@ + +!ELSE +!ERROR No source files to build were defined in the INF file +!ENDIF + +# +# Defines for standard intermediate files and build targets +# +TARGET_DLL = $(BIN_DIR)\$(BASE_NAME).dll +TARGET_EFI = $(BIN_DIR)\$(BASE_NAME).efi +TARGET_DPX = $(DEST_DIR)\$(BASE_NAME).dpx +TARGET_UI = $(DEST_DIR)\$(BASE_NAME).ui +TARGET_VER = $(DEST_DIR)\$(BASE_NAME).ver +TARGET_MAP = $(BIN_DIR)\$(BASE_NAME).map +TARGET_PDB = $(BIN_DIR)\$(BASE_NAME).pdb +TARGET_SYM = $(BIN_DIR)\$(BASE_NAME).sym +TARGET_TE = $(BIN_DIR)\$(BASE_NAME).te +TARGET_PE32 = $(DEST_DIR)\$(BASE_NAME).pe32 +TARGET_TES = $(DEST_DIR)\$(BASE_NAME).tes +TARGET_FFS_FILE = $(BIN_DIR)\$(FILE_GUID)-$(BASE_NAME).pei + +# +# Create our TE section from our TE file +# +$(TARGET_TES) : $(TARGET_TE) + $(GENSECTION) -I $(TARGET_TE) -O $(TARGET_TES) -S EFI_SECTION_TE + +# +# Run FWImage on the DLL to set it as an EFI image type. +# +$(TARGET_EFI) : $(TARGET_DLL) $(INF_FILENAME) + $(FWIMAGE) $(COMPONENT_TYPE) $(TARGET_DLL) $(TARGET_EFI) + +# +# Run GenTEImage on the built .efi file to create our TE file. +# +$(TARGET_TE) : $(TARGET_EFI) + $(GENTEIMAGE) -o $(TARGET_TE) $(TARGET_EFI) + +# +# Link all objects and libs to create the executable +# +$(TARGET_DLL) : $(TARGET_LOCAL_LIB) $(LIBS) $(INF_FILENAME) $(ENV_DEPS) + $(LINK) $(LINK_FLAGS_DLL) $(LIBS) /ENTRY:$(IMAGE_ENTRY_POINT) \ + $(TARGET_LOCAL_LIB) /OUT:$(TARGET_DLL) /MAP:$(TARGET_MAP) \ + /PDB:$(TARGET_PDB) + $(SETSTAMP) $(TARGET_DLL) $(BUILD_DIR)\GenStamp.txt +!IF "$(EFI_GENERATE_SYM_FILE)" == "YES" + if exist $(TARGET_PDB) $(PE2SYM) $(TARGET_PDB) $(TARGET_SYM) +!ENDIF + +!IF "$(EFI_ZERO_DEBUG_DATA)" == "YES" + $(ZERODEBUGDATA) $(TARGET_DLL) +!ENDIF + +# +# Create the user interface section +# +$(TARGET_UI) : $(INF_FILENAME) + $(GENSECTION) -O $(TARGET_UI) -S EFI_SECTION_USER_INTERFACE -A "$(BASE_NAME)" + +# +# Create the version section +# +!IF "$(BUILD_NUMBER)" != "" +!IF "$(VERSION_STRING)" != "" +$(TARGET_VER) : $(INF_FILENAME) + $(GENSECTION) -O $(TARGET_VER) -S EFI_SECTION_VERSION -V $(BUILD_NUMBER) -A "$(VERSION_STRING)" +!ELSE +$(TARGET_VER) : $(INF_FILENAME) + $(GENSECTION) -O $(TARGET_VER) -S EFI_SECTION_VERSION -V $(BUILD_NUMBER) +!ENDIF +!ELSE +$(TARGET_VER) : + echo.>$(TARGET_VER) + type $(TARGET_VER)>$(TARGET_VER) +!ENDIF + +# +# Makefile entries to create the dependency expression section. +# Use the DPX file from the source directory unless an override file +# was specified. +# If no DPX source file was specified, then create an empty file to +# be used. +# +!IF "$(DPX_SOURCE)" != "" +DPX_SOURCE_FILE = $(SOURCE_DIR)\$(DPX_SOURCE) +!ENDIF + +!IF "$(DPX_SOURCE_OVERRIDE)" != "" +DPX_SOURCE_FILE = $(DPX_SOURCE_OVERRIDE) +!ENDIF + +!IF "$(DPX_SOURCE_FILE)" != "" +!IF EXIST ($(DPX_SOURCE_FILE)) +# +# Add dependency check for dxs file, because dxs file depends on PPI or +# PROTOCOL guid defintions. +# +DEP_FILE = $(DEST_DIR)\$(BASE_NAME)dxs.dep + +!IF EXIST($(TARGET_DPX)) +DEP_TARGETS = $(DEP_TARGETS) $(DEST_DIR)\$(BASE_NAME)dxs.dep +!IF !EXIST($(DEP_FILE)) +CREATEDEPS = YES +!ENDIF +!ENDIF + +!IF EXIST($(DEP_FILE)) +!INCLUDE $(DEP_FILE) +!ENDIF +# +# Update dep file for next round incremental build +# +$(DEP_FILE) : $(TARGET_DPX) + $(MAKEDEPS) -f $(DPX_SOURCE_FILE) $(DEP_FLAGS) + +$(TARGET_DPX) : $(DPX_SOURCE_FILE) $(INF_FILENAME) + $(CC) /nologo $(INC) $(VERSION_FLAGS) /EP $(DPX_SOURCE_FILE) > $*.tmp1 + $(GENDEPEX) -I $*.tmp1 -O $*.tmp2 + $(GENSECTION) -I $*.tmp2 -O $@ -S $(DEPEX_TYPE) + del $*.tmp1 > NUL + del $*.tmp2 > NUL +!ELSE +!ERROR Dependency expression source file "$(DPX_SOURCE_FILE)" does not exist. +!ENDIF +!ELSE +$(TARGET_DPX) : + echo. > $(TARGET_DPX) + type $(TARGET_DPX) > $(TARGET_DPX) +!ENDIF + +# +# Build an FFS file from the sections and package +# +$(TARGET_FFS_FILE) : $(TARGET_TES) $(TARGET_DPX) $(TARGET_UI) $(TARGET_VER) $(PACKAGE_FILENAME) + $(GENFFSFILE) -B $(DEST_DIR) -P1 $(PACKAGE_FILENAME) -V + +!IF "$(CREATEDEPS)"=="YES" +all : $(DEP_TARGETS) + $(MAKE) -f $(MAKEFILE_NAME) all +!ELSE +all : $(TARGET_FFS_FILE) $(DEP_TARGETS) +!ENDIF + +# +# Remove the generated temp and final files for this modules. +# +clean : +!IF ("$(FILE_GUID)" != "") + @if exist $(BIN_DIR)\$(FILE_GUID)-$(BASE_NAME).* del $(BIN_DIR)\$(FILE_GUID)-$(BASE_NAME).* +!ENDIF + @if exist $(BIN_DIR)\$(BASE_NAME).* del $(BIN_DIR)\$(BASE_NAME).* + @del /q $(DEST_OUTPUT_DIRS) + +[=============================================================================] +# +# These are the commands to build EBC EFI targets +# +[=============================================================================] +[Build.Ebc.BS_DRIVER|RT_DRIVER|APPLICATION] + +# +# Add the EBC library to our list of libs +# +LIBS = $(LIBS) $(EBC_TOOLS_PATH)\lib\EbcLib.lib + +!IF "$(LOCALIZE)" == "YES" + +!IF "$(EFI_GENERATE_HII_EXPORT)" == "YES" +STRGATHER_FLAGS = $(STRGATHER_FLAGS) -hpk $(DEST_DIR)\$(BASE_NAME)Strings.hpk + +# +# There will be one HII pack containing all the strings. Add that file +# to the list of HII pack files we'll use to create our final HII export file. +# +HII_PACK_FILES = $(HII_PACK_FILES) $(DEST_DIR)\$(BASE_NAME)Strings.hpk + +LOCALIZE_TARGETS = $(LOCALIZE_TARGETS) $(DEST_DIR)\$(BASE_NAME).hii +!ENDIF + +$(DEST_DIR)\$(BASE_NAME).sdb : $(SDB_FILES) $(SOURCE_FILES) + $(STRGATHER) -scan -vdbr $(STRGATHER_FLAGS) -od $(DEST_DIR)\$(BASE_NAME).sdb \ + -skipext .uni -skipext .h $(SOURCE_FILES) + +$(DEST_DIR)\$(BASE_NAME)Strings.c : $(DEST_DIR)\$(BASE_NAME).sdb + $(STRGATHER) -dump $(LANGUAGE_FLAGS) -bn $(BASE_NAME)Strings -db $(DEST_DIR)\$(BASE_NAME).sdb \ + -oc $(DEST_DIR)\$(BASE_NAME)Strings.c + +$(DEST_DIR)\$(BASE_NAME)StrDefs.h : $(DEST_DIR)\$(BASE_NAME).sdb + $(STRGATHER) -dump $(LANGUAGE_FLAGS) -bn $(BASE_NAME)Strings -db $(DEST_DIR)\$(BASE_NAME).sdb \ + -oh $(DEST_DIR)\$(BASE_NAME)StrDefs.h + +$(DEST_DIR)\$(BASE_NAME)Strings.hpk : $(DEST_DIR)\$(BASE_NAME).sdb + $(STRGATHER) -dump $(LANGUAGE_FLAGS) -bn $(BASE_NAME)Strings -db $(DEST_DIR)\$(BASE_NAME).sdb \ + -hpk $(DEST_DIR)\$(BASE_NAME)Strings.hpk + +OBJECTS = $(OBJECTS) $(DEST_DIR)\$(BASE_NAME)Strings.obj + +$(DEST_DIR)\$(BASE_NAME)Strings.obj : $(DEST_DIR)\$(BASE_NAME)Strings.c $(INF_FILENAME) $(ALL_DEPS) + $(EBC_CC) $(EBC_C_FLAGS) $(DEST_DIR)\$(BASE_NAME)Strings.c + +LOCALIZE_TARGETS = $(LOCALIZE_TARGETS) $(DEST_DIR)\$(BASE_NAME)StrDefs.h + +!ENDIF + +# +# If building an application, then the target is a .app, not .dxe +# +!IF "$(COMPONENT_TYPE)" == "APPLICATION" +TARGET_FFS_FILE = $(BIN_DIR)\$(FILE_GUID)-$(BASE_NAME).app +SUBSYSTEM = EFI_APPLICATION +!ELSE +TARGET_FFS_FILE = $(BIN_DIR)\$(FILE_GUID)-$(BASE_NAME).dxe +SUBSYSTEM = EFI_BOOT_SERVICE_DRIVER +!ENDIF + +# +# Defines for standard intermediate files and build targets +# +TARGET_EFI = $(BIN_DIR)\$(BASE_NAME).efi +TARGET_DPX = $(DEST_DIR)\$(BASE_NAME).dpx +TARGET_UI = $(DEST_DIR)\$(BASE_NAME).ui +TARGET_VER = $(DEST_DIR)\$(BASE_NAME).ver +TARGET_MAP = $(BIN_DIR)\$(BASE_NAME).map +TARGET_PDB = $(BIN_DIR)\$(BASE_NAME).pdb +TARGET_PE32 = $(DEST_DIR)\$(BASE_NAME).pe32 +TARGET_DLL = $(BIN_DIR)\$(BASE_NAME).dll + +# +# First link all the objects and libs together to make a .dll file +# +$(TARGET_DLL) : $(OBJECTS) $(LIBS) $(INF_FILENAME) $(ENV_DEPS) + $(EBC_LINK) $(EBC_LINK_FLAGS) /SUBSYSTEM:$(SUBSYSTEM) /ENTRY:EfiStart \ + $(OBJECTS) $(LIBS) /OUT:$(TARGET_DLL) /MAP:$(TARGET_MAP) + $(SETSTAMP) $(TARGET_DLL) $(BUILD_DIR)\GenStamp.txt +!IF "$(EFI_ZERO_DEBUG_DATA)" == "YES" + $(ZERODEBUGDATA) $(TARGET_DLL) +!ENDIF + +# +# Now take the .dll file and make a .efi file +# +$(TARGET_EFI) : $(TARGET_DLL) $(INF_FILENAME) + $(FWIMAGE) -t 0 $(COMPONENT_TYPE) $(TARGET_DLL) $(TARGET_EFI) + +# +# Now take the .efi file and make a .pe32 section +# +$(TARGET_PE32) : $(TARGET_EFI) + $(GENSECTION) -I $(TARGET_EFI) -O $(TARGET_PE32) -S EFI_SECTION_PE32 + +# +# Create the user interface section +# +$(TARGET_UI) : $(INF_FILENAME) + $(GENSECTION) -O $(TARGET_UI) -S EFI_SECTION_USER_INTERFACE -A "$(BASE_NAME)" + +# +# Create the version section +# +!IF "$(BUILD_NUMBER)" != "" +!IF "$(VERSION_STRING)" != "" +$(TARGET_VER) : $(INF_FILENAME) + $(GENSECTION) -O $(TARGET_VER) -S EFI_SECTION_VERSION -V $(BUILD_NUMBER) -A "$(VERSION_STRING)" +!ELSE +$(TARGET_VER) : $(INF_FILENAME) + $(GENSECTION) -O $(TARGET_VER) -S EFI_SECTION_VERSION -V $(BUILD_NUMBER) +!ENDIF +!ELSE +$(TARGET_VER) : + echo. > $(TARGET_VER) + type $(TARGET_VER) > $(TARGET_VER) +!ENDIF + +# +# Makefile entries to create the dependency expression section. +# Use the DPX file from the source directory unless an override file +# was specified. +# If no DPX source file was specified, then create an empty file to +# be used. +# +!IF "$(DPX_SOURCE)" != "" +DPX_SOURCE_FILE = $(SOURCE_DIR)\$(DPX_SOURCE) +!ENDIF + +!IF "$(DPX_SOURCE_OVERRIDE)" != "" +DPX_SOURCE_FILE = $(DPX_SOURCE_OVERRIDE) +!ENDIF + +!IF "$(DPX_SOURCE_FILE)" != "" +!IF EXIST ($(DPX_SOURCE_FILE)) +# +# Add dependency check for dxs file, because dxs file depends on PPI or +# PROTOCOL guid defintions. +# +DEP_FILE = $(DEST_DIR)\$(BASE_NAME)dxs.dep + +!IF EXIST($(TARGET_DPX)) +DEP_TARGETS = $(DEP_TARGETS) $(DEST_DIR)\$(BASE_NAME)dxs.dep +!IF !EXIST($(DEP_FILE)) +CREATEDEPS = YES +!ENDIF +!ENDIF + +!IF EXIST($(DEP_FILE)) +!INCLUDE $(DEP_FILE) +!ENDIF +# +# Update dep file for next round incremental build +# +$(DEP_FILE) : $(TARGET_DPX) + $(MAKEDEPS) -f $(DPX_SOURCE_FILE) $(DEP_FLAGS) + +$(TARGET_DPX) : $(DPX_SOURCE_FILE) $(INF_FILENAME) + $(CC) /nologo $(INC) $(VERSION_FLAGS) /EP $(DPX_SOURCE_FILE) > $*.tmp1 + $(GENDEPEX) -I $*.tmp1 -O $*.tmp2 + $(GENSECTION) -I $*.tmp2 -O $@ -S $(DEPEX_TYPE) + del $*.tmp1 > NUL + del $*.tmp2 > NUL +!ELSE +!ERROR Dependency expression source file "$(DPX_SOURCE_FILE)" does not exist. +!ENDIF +!ELSE +$(TARGET_DPX) : + echo. > $(TARGET_DPX) + type $(TARGET_DPX) > $(TARGET_DPX) +!ENDIF + +# +# Describe how to build the HII export file from all the input HII pack files. +# Use the FFS file GUID for the package GUID in the export file. Only used +# when multiple VFR share strings. +# +$(DEST_DIR)\$(BASE_NAME).hii : $(HII_PACK_FILES) + $(HIIPACK) create -g $(FILE_GUID) -p $(HII_PACK_FILES) -o $(DEST_DIR)\$(BASE_NAME).hii + +# +# If the build calls for creating an FFS file with the IFR included as +# a separate binary (not compiled into the driver), then build the binary +# section now. Note that the PACKAGE must be set correctly to actually get +# this IFR section pulled into the FFS file. +# +!IF ("$(HII_IFR_PACK_FILES)" != "") + +$(DEST_DIR)\$(BASE_NAME)IfrBin.sec : $(HII_IFR_PACK_FILES) + $(HIIPACK) create -novarpacks -p $(HII_IFR_PACK_FILES) -o $(DEST_DIR)\$(BASE_NAME)IfrBin.hii + $(GENSECTION) -I $(DEST_DIR)\$(BASE_NAME)IfrBin.hii -O $(DEST_DIR)\$(BASE_NAME)IfrBin.sec -S EFI_SECTION_RAW + +BIN_TARGETS = $(BIN_TARGETS) $(DEST_DIR)\$(BASE_NAME)IfrBin.sec + +!ENDIF + +# +# Build an FFS file from the sections and package +# +$(TARGET_FFS_FILE) : $(TARGET_PE32) $(TARGET_DPX) $(TARGET_UI) $(TARGET_VER) $(PACKAGE_FILENAME) + $(GENFFSFILE) -B $(DEST_DIR) -P1 $(PACKAGE_FILENAME) -V + +!IF "$(CREATEDEPS)"=="YES" +all : $(DEP_TARGETS) + $(MAKE) -f $(MAKEFILE_NAME) all +!ELSE +all : $(LOCALIZE_TARGETS) $(BIN_TARGETS) $(TARGET_FFS_FILE) $(DEP_TARGETS) +!ENDIF + +# +# Remove the generated temp and final files for this modules. +# +clean : +!IF ("$(FILE_GUID)" != "") + @if exist $(BIN_DIR)\$(FILE_GUID)-$(BASE_NAME).* del $(BIN_DIR)\$(FILE_GUID)-$(BASE_NAME).* +!ENDIF + @if exist $(BIN_DIR)\$(BASE_NAME).* del $(BIN_DIR)\$(BASE_NAME).* + @del /q $(DEST_OUTPUT_DIRS) + +[=============================================================================] +# +# These are the commands to build vendor-provided *.EFI files into an FV. +# To use them, create an INF file with BUILD_TYPE=BS_DRIVER_EFI. +# This section, as it now exists, only supports boot service drivers. +# +[=============================================================================] +[Build.Ia32.BS_DRIVER_EFI|RT_DRIVER_EFI|APPLICATION_EFI,Build.Ipf.BS_DRIVER_EFI|RT_DRIVER_EFI|APPLICATION_EFI,Build.Ebc.BS_DRIVER_EFI|RT_DRIVER_EFI|APPLICATION_EFI,Build.x64.BS_DRIVER_EFI|RT_DRIVER_EFI|APPLICATION_EFI] +# +# Defines for standard intermediate files and build targets. For the source +# .efi file, take the one in the source directory if it exists. If there's not +# one there, look for one in the processor-specfic subdirectory. +# +!IF EXIST ("$(SOURCE_DIR)\$(BASE_NAME).efi") +TARGET_EFI = $(SOURCE_DIR)\$(BASE_NAME).efi +!ELSEIF EXIST ("$(SOURCE_DIR)\$(PROCESSOR)\$(BASE_NAME).efi") +TARGET_EFI = $(SOURCE_DIR)\$(PROCESSOR)\$(BASE_NAME).efi +!ELSE +!ERROR Pre-existing $(BASE_NAME).efi file not found in $(SOURCE_DIR) nor $(SOURCE_DIR)\$(PROCESSOR) +!ENDIF + +TARGET_DPX = $(DEST_DIR)\$(BASE_NAME).dpx +TARGET_UI = $(DEST_DIR)\$(BASE_NAME).ui +TARGET_VER = $(DEST_DIR)\$(BASE_NAME).ver +TARGET_MAP = $(BIN_DIR)\$(BASE_NAME).map +TARGET_PDB = $(BIN_DIR)\$(BASE_NAME).pdb +TARGET_PE32 = $(DEST_DIR)\$(BASE_NAME).pe32 +TARGET_DLL = $(BIN_DIR)\$(BASE_NAME).dll + +# +# If building an application, then the target is a .app, not .dxe +# +!IF "$(COMPONENT_TYPE)" == "APPLICATION" +TARGET_FFS_FILE = $(BIN_DIR)\$(FILE_GUID)-$(BASE_NAME).app +!ELSE +TARGET_FFS_FILE = $(BIN_DIR)\$(FILE_GUID)-$(BASE_NAME).dxe +!ENDIF + +# +# Take the .efi file and make a .pe32 file +# +$(TARGET_PE32) : $(TARGET_EFI) + $(GENSECTION) -I $(TARGET_EFI) -O $(TARGET_PE32) -S EFI_SECTION_PE32 + +# +# Create the user interface section +# +$(TARGET_UI) : $(INF_FILENAME) + $(GENSECTION) -O $(TARGET_UI) -S EFI_SECTION_USER_INTERFACE -A "$(BASE_NAME)" + +# +# Create the version section +# +!IF "$(BUILD_NUMBER)" != "" +!IF "$(VERSION_STRING)" != "" +$(TARGET_VER) : $(INF_FILENAME) + $(GENSECTION) -O $(TARGET_VER) -S EFI_SECTION_VERSION -V $(BUILD_NUMBER) -A "$(VERSION_STRING)" +!ELSE +$(TARGET_VER) : $(INF_FILENAME) + $(GENSECTION) -O $(TARGET_VER) -S EFI_SECTION_VERSION -V $(BUILD_NUMBER) +!ENDIF +!ELSE +$(TARGET_VER) : + echo. > $(TARGET_VER) + type $(TARGET_VER) > $(TARGET_VER) +!ENDIF + +# +# Makefile entries to create the dependency expression section. +# Use the DPX file from the source directory unless an override file +# was specified. +# If no DPX source file was specified, then create an empty file to +# be used. +# +!IF "$(DPX_SOURCE)" != "" +DPX_SOURCE_FILE = $(SOURCE_DIR)\$(DPX_SOURCE) +!ENDIF + +!IF "$(DPX_SOURCE_OVERRIDE)" != "" +DPX_SOURCE_FILE = $(DPX_SOURCE_OVERRIDE) +!ENDIF + +!IF "$(DPX_SOURCE_FILE)" != "" +!IF EXIST ($(DPX_SOURCE_FILE)) +# +# Add dependency check for dxs file, because dxs file depends on PPI or +# PROTOCOL guid defintions. +# +DEP_FILE = $(DEST_DIR)\$(BASE_NAME)dxs.dep + +!IF EXIST($(TARGET_DPX)) +DEP_TARGETS = $(DEP_TARGETS) $(DEST_DIR)\$(BASE_NAME)dxs.dep +!IF !EXIST($(DEP_FILE)) +CREATEDEPS = YES +!ENDIF +!ENDIF + +!IF EXIST($(DEP_FILE)) +!INCLUDE $(DEP_FILE) +!ENDIF +# +# Update dep file for next round incremental build +# +$(DEP_FILE) : $(TARGET_DPX) + $(MAKEDEPS) -f $(DPX_SOURCE_FILE) $(DEP_FLAGS) + +$(TARGET_DPX) : $(DPX_SOURCE_FILE) $(INF_FILENAME) + $(CC) /nologo $(INC) $(VERSION_FLAGS) /EP $(DPX_SOURCE_FILE) > $*.tmp1 + $(GENDEPEX) -I $*.tmp1 -O $*.tmp2 + $(GENSECTION) -I $*.tmp2 -O $@ -S $(DEPEX_TYPE) + del $*.tmp1 > NUL + del $*.tmp2 > NUL +!ELSE +!ERROR Dependency expression source file "$(DPX_SOURCE_FILE)" does not exist. +!ENDIF +!ELSE +$(TARGET_DPX) : + echo. > $(TARGET_DPX) + type $(TARGET_DPX) > $(TARGET_DPX) +!ENDIF + +# +# Build a FFS file from the sections and package +# +$(TARGET_FFS_FILE) : $(TARGET_PE32) $(TARGET_DPX) $(TARGET_UI) $(TARGET_VER) $(PACKAGE_FILENAME) + $(GENFFSFILE) -B $(DEST_DIR) -P1 $(PACKAGE_FILENAME) -V + +all : $(TARGET_FFS_FILE) + +# +# Remove the generated temp and final files for this modules. +# +clean : +!IF ("$(FILE_GUID)" != "") + @if exist $(BIN_DIR)\$(FILE_GUID)-$(BASE_NAME).* del $(BIN_DIR)\$(FILE_GUID)-$(BASE_NAME).* +!ENDIF + @if exist $(BIN_DIR)\$(BASE_NAME).* del $(BIN_DIR)\$(BASE_NAME).* + @del /q $(DEST_OUTPUT_DIRS) + +[=============================================================================] +[Compile.Ia32.Bin|Bmp,Compile.x64.Bin|Bmp,Compile.Ipf.Bin|Bmp] +# +# We simply copy the binary file from the source directory to the destination directory +# +$(DEST_DIR)\$(BASE_NAME).bin : $(SOURCE_FILE_NAME) + copy $** $@ + +[=============================================================================] +[Build.Ia32.BINARY|Legacy16|Logo,Build.Ipf.BINARY|Legacy16|Logo,Build.x64.BINARY|Legacy16|Logo] +# +# Use GenFfsFile to convert it to an FFS file +# +$(BIN_DIR)\$(FILE_GUID)-$(BASE_NAME).ffs : $(DEST_DIR)\$(BASE_NAME).bin $(PACKAGE_FILENAME) + $(GENSECTION) -I $(DEST_DIR)\$(BASE_NAME).bin -O $(DEST_DIR)\$(BASE_NAME).sec -S EFI_SECTION_RAW + $(GENFFSFILE) -B $(DEST_DIR) -P1 $(PACKAGE_FILENAME) -V + +all : $(BIN_DIR)\$(FILE_GUID)-$(BASE_NAME).ffs + +# +# Remove the generated temp and final files for this modules. +# +clean : +!IF ("$(FILE_GUID)" != "") + @if exist $(BIN_DIR)\$(FILE_GUID)-$(BASE_NAME).* del $(BIN_DIR)\$(FILE_GUID)-$(BASE_NAME).* +!ENDIF + @if exist $(BIN_DIR)\$(BASE_NAME).* del $(BIN_DIR)\$(BASE_NAME).* + @del /q $(DEST_OUTPUT_DIRS) + +[=============================================================================] +[Build.Ia32.RAWFILE|CONFIG,Build.Ipf.RAWFILE|CONFIG,Build.x64.RAWFILE|CONFIG] +# +# Use GenFfsFile to convert it to an raw FFS file +# +$(BIN_DIR)\$(FILE_GUID)-$(BASE_NAME).raw : $(DEST_DIR)\$(BASE_NAME).bin $(PACKAGE_FILENAME) + $(GENFFSFILE) -B $(DEST_DIR) -P1 $(PACKAGE_FILENAME) -V + +all : $(BIN_DIR)\$(FILE_GUID)-$(BASE_NAME).raw + +# +# Remove the generated temp and final files for this modules. +# +clean : +!IF ("$(FILE_GUID)" != "") + @if exist $(BIN_DIR)\$(FILE_GUID)-$(BASE_NAME).* del $(BIN_DIR)\$(FILE_GUID)-$(BASE_NAME).* +!ENDIF + @if exist $(BIN_DIR)\$(BASE_NAME).* del $(BIN_DIR)\$(BASE_NAME).* + @del /q $(DEST_OUTPUT_DIRS) + +[=============================================================================] +# +# These are commands to compile unicode .uni files. +# +[=============================================================================] +[Compile.Ia32.Uni,Compile.Ipf.Uni,Compile.Ebc.Uni,Compile.x64.Uni] +# +# Emit an error message if the file's base name is the same as the +# component base name. This causes build issues. +# +!IF "$(FILE)" == "$(BASE_NAME)" +!ERROR Component Unicode string file name cannot be the same as the component BASE_NAME. +!ENDIF + +# +# Always create dep file for uni file as it can be created at the same time when +# strgather is parsing uni file. +# +DEP_FILE = $(DEST_DIR)\$(FILE)Uni.dep + +!IF EXIST($(DEP_FILE)) +!INCLUDE $(DEP_FILE) +!ENDIF + +$(DEST_DIR)\$(FILE).sdb : $(SOURCE_FILE_NAME) $(INF_FILENAME) + $(STRGATHER) -parse -newdb -db $(DEST_DIR)\$(FILE).sdb -dep $(DEP_FILE) $(INC) $(SOURCE_FILE_NAME) + +SDB_FILES = $(SDB_FILES) $(DEST_DIR)\$(FILE).sdb +STRGATHER_FLAGS = $(STRGATHER_FLAGS) -db $(DEST_DIR)\$(FILE).sdb +LOCALIZE = YES + +[=============================================================================] +[Compile.Ia32.Vfr,Compile.Ipf.Vfr,Compile.x64.Vfr] + +DEP_FILE = $(DEST_DIR)\$(FILE)Vfr.dep + +!IF EXIST($(DEST_DIR)\$(FILE).obj) +DEP_TARGETS = $(DEP_TARGETS) $(DEST_DIR)\$(FILE)Vfr.dep +!IF !EXIST($(DEP_FILE)) +CREATEDEPS = YES +!ENDIF +!ENDIF + +!IF EXIST($(DEP_FILE)) +!INCLUDE $(DEP_FILE) +!ENDIF + +# +# Update dep file for next round incremental build +# +$(DEP_FILE) : $(DEST_DIR)\$(FILE).obj + $(MAKEDEPS) -f $(SOURCE_FILE_NAME) $(DEP_FLAGS) + +HII_PACK_FILES = $(HII_PACK_FILES) $(DEST_DIR)\$(FILE).hpk + +# +# Add a dummy command for building the HII pack file. In reality, it's built +# below, but the C_FLAGS macro reference the target as $@, so you can't specify +# the obj and hpk files as dual targets of the same command. +# +$(DEST_DIR)\$(FILE).hpk : $(DEST_DIR)\$(FILE).obj + +$(DEST_DIR)\$(FILE).obj : $(SOURCE_FILE_NAME) $(INF_FILENAME) $(ALL_DEPS) + $(VFRCOMPILE) $(VFRCOMPILE_FLAGS) $(INC) -ibin -od $(DEST_DIR)\$(SOURCE_RELATIVE_PATH) \ + -l $(VFR_FLAGS) $(SOURCE_FILE_NAME) + $(CC) $(C_FLAGS) $(DEST_DIR)\$(FILE).c + +[=============================================================================] +[Compile.Ebc.Vfr] + +DEP_FILE = $(DEST_DIR)\$(FILE)Vfr.dep + +!IF EXIST($(DEST_DIR)\$(FILE).obj) +DEP_TARGETS = $(DEP_TARGETS) $(DEST_DIR)\$(FILE)Vfr.dep +!IF !EXIST($(DEP_FILE)) +CREATEDEPS = YES +!ENDIF +!ENDIF + +!IF EXIST($(DEP_FILE)) +!INCLUDE $(DEP_FILE) +!ENDIF + +# +# Update dep file for next round incremental build +# +$(DEP_FILE) : $(DEST_DIR)\$(FILE).obj + $(MAKEDEPS) -f $(SOURCE_FILE_NAME) $(DEP_FLAGS) + +HII_PACK_FILES = $(HII_PACK_FILES) $(DEST_DIR)\$(FILE).hpk + +# +# Add a dummy command for building the HII pack file. In reality, it's built +# below, but the C_FLAGS macro reference the target as $@, so you can't specify +# the obj and hpk files as dual targets of the same command. +# +$(DEST_DIR)\$(FILE).hpk : $(DEST_DIR)\$(FILE).obj + +$(DEST_DIR)\$(FILE).obj : $(SOURCE_FILE_NAME) $(INF_FILENAME) $(ALL_DEPS) + $(VFRCOMPILE) $(VFRCOMPILE_FLAGS) $(INC) -ibin -od $(DEST_DIR)\$(SOURCE_RELATIVE_PATH) \ + -l $(VFR_FLAGS) $(SOURCE_FILE_NAME) + $(EBC_CC) $(EBC_C_FLAGS) $(DEST_DIR)\$(FILE).c + +[=============================================================================] +# +# Commands for building IFR as uncompressed binary into the FFS file. To +# use it, set COMPILE_SELECT=.vfr=Ifr_Bin for the component in the DSC file. +# +[=============================================================================] +[Compile.Ia32.Ifr_Bin,Compile.Ipf.Ifr_Bin,Compile.x64.Ifr_Bin] + +DEP_FILE = $(DEST_DIR)\$(FILE)Vfr.dep + +!IF EXIST($(DEST_DIR)\$(FILE).obj) +DEP_TARGETS = $(DEP_TARGETS) $(DEST_DIR)\$(FILE)Vfr.dep +!IF !EXIST($(DEP_FILE)) +CREATEDEPS = YES +!ENDIF +!ENDIF + +!IF EXIST($(DEP_FILE)) +!INCLUDE $(DEP_FILE) +!ENDIF + +# +# Update dep file for next round incremental build +# +$(DEP_FILE) : $(DEST_DIR)\$(FILE).obj + $(MAKEDEPS) -f $(SOURCE_FILE_NAME) $(DEP_FLAGS) + +HII_PACK_FILES = $(HII_PACK_FILES) $(DEST_DIR)\$(FILE).hpk + +# +# Add a dummy command for building the HII pack file. In reality, it's built +# below, but the C_FLAGS macro reference the target as $@, so you can't specify +# the obj and hpk files as dual targets of the same command. +# +$(DEST_DIR)\$(FILE).hpk : $(DEST_DIR)\$(FILE).obj + +$(DEST_DIR)\$(FILE).obj : $(SOURCE_FILE_NAME) $(INF_FILENAME) $(ALL_DEPS) + $(VFRCOMPILE) $(VFRCOMPILE_FLAGS) $(INC) -ibin -od $(DEST_DIR)\$(SOURCE_RELATIVE_PATH) \ + -l $(VFR_FLAGS) $(SOURCE_FILE_NAME) + $(CC) $(C_FLAGS) $(DEST_DIR)\$(FILE).c + +# +# Add to the variable that contains the list of VFR binary files we're going +# to merge together at the end of the build. +# +HII_IFR_PACK_FILES = $(HII_IFR_PACK_FILES) $(DEST_DIR)\$(FILE).hpk + +[=============================================================================] +# +# Commands for building IFR as uncompressed binary into the FFS file. To +# use it, set COMPILE_SELECT=.vfr=Ifr_Bin for the component in the DSC file. +# +[=============================================================================] +[Compile.Ebc.Ifr_Bin] + +DEP_FILE = $(DEST_DIR)\$(FILE)Vfr.dep + +!IF EXIST($(DEST_DIR)\$(FILE).obj) +DEP_TARGETS = $(DEP_TARGETS) $(DEST_DIR)\$(FILE)Vfr.dep +!IF !EXIST($(DEP_FILE)) +CREATEDEPS = YES +!ENDIF +!ENDIF + +!IF EXIST($(DEP_FILE)) +!INCLUDE $(DEP_FILE) +!ENDIF + +# +# Update dep file for next round incremental build +# +$(DEP_FILE) : $(DEST_DIR)\$(FILE).obj + $(MAKEDEPS) -f $(SOURCE_FILE_NAME) $(DEP_FLAGS) + +HII_PACK_FILES = $(HII_PACK_FILES) $(DEST_DIR)\$(FILE).hpk + +# +# Add a dummy command for building the HII pack file. In reality, it's built +# below, but the C_FLAGS macro reference the target as $@, so you can't specify +# the obj and hpk files as dual targets of the same command. +# +$(DEST_DIR)\$(FILE).hpk : $(DEST_DIR)\$(FILE).obj + +$(DEST_DIR)\$(FILE).obj : $(SOURCE_FILE_NAME) $(INF_FILENAME) $(ALL_DEPS) + $(VFRCOMPILE) $(VFRCOMPILE_FLAGS) $(INC) -ibin -od $(DEST_DIR)\$(SOURCE_RELATIVE_PATH) \ + -l $(VFR_FLAGS) $(SOURCE_FILE_NAME) + $(EBC_CC) $(EBC_C_FLAGS) $(DEST_DIR)\$(FILE).c + +# +# Add to the variable that contains the list of VFR binary files we're going +# to merge together at the end of the build. +# +HII_IFR_PACK_FILES = $(HII_IFR_PACK_FILES) $(DEST_DIR)\$(FILE).hpk + +[=============================================================================] +[Compile.Ia32.Fv,Compile.Ipf.Fv,Compile.x64.Fv] +# +# Run GenSection on the firmware volume image. +# +$(DEST_DIR)\$(SOURCE_FV)Fv.sec : $(SOURCE_FILE_NAME) + $(GENSECTION) -I $(SOURCE_FILE_NAME) -O $(DEST_DIR)\$(SOURCE_FV)Fv.sec -S EFI_SECTION_FIRMWARE_VOLUME_IMAGE + +[=============================================================================] diff --git a/EdkCompatibilityPkg/Sample/Platform/CommonIa32.dsc b/EdkCompatibilityPkg/Sample/Platform/CommonIa32.dsc new file mode 100644 index 0000000000..f9fae29359 --- /dev/null +++ b/EdkCompatibilityPkg/Sample/Platform/CommonIa32.dsc @@ -0,0 +1,558 @@ +#/*++ +# +# Copyright (c) 2004 - 2007, Intel Corporation +# All rights reserved. This program and the accompanying materials +# are licensed and made available under the terms and conditions of the BSD License +# which accompanies this distribution. The full text of the license may be found at +# http://opensource.org/licenses/bsd-license.php +# +# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +# +# Module Name: +# +# CommonIa32.dsc +# +# Abstract: +# +# This is the build description file containing the processor architecture +# dependent build instructions. +# +# Notes: +# +# The info in this file is broken down into sections. The start of a section +# is designated by a "[" in the first column. So the [=====] separater ends +# a section. +# +#--*/ + + +[=============================================================================] +# +# These are the package descriptions. They are tagged as +# [Package.$(COMPONENT_TYPE).$(PACKAGE)], where COMPONENT_TYPE is typically +# defined in the component INF file, and PACKAGE is typically specified +# in the components section in the main DSC file. Main DSC file can also define +# platform specific package descriptions. +# + +[=============================================================================] +[Package.APPLICATION.Default] +PACKAGE.INF +\[.] +BASE_NAME = $(BASE_NAME) +FFS_FILEGUID = $(FILE_GUID) +FFS_FILETYPE = EFI_FV_FILETYPE_APPLICATION +FFS_ATTRIB_CHECKSUM = TRUE + +IMAGE_SCRIPT = +{ + Compress ($(COMPRESS_METHOD)) { + Tool ( + $(OEMTOOLPATH)\GenCRC32Section + ARGS= -i $(DEST_DIR)\$(BASE_NAME).pe32 + $(DEST_DIR)\$(BASE_NAME).ui + $(DEST_DIR)\$(BASE_NAME).ver + -o $(DEST_DIR)\$(BASE_NAME).crc32 + OUTPUT = $(DEST_DIR)\$(BASE_NAME).crc32 + ) + } +} + +[=============================================================================] +[Package.Apriori.Default|DefaultStripped,Package.FILE.Default|DefaultStripped] +PACKAGE.INF +\[.] +BASE_NAME = $(BASE_NAME) +FFS_FILEGUID = $(FILE_GUID) +FFS_FILETYPE = EFI_FV_FILETYPE_FREEFORM +FFS_ATTRIB_CHECKSUM = TRUE + +IMAGE_SCRIPT = +{ + $(BASE_NAME).sec +} + +[=============================================================================] +[Package.RAWFILE.Default|DefaultStripped,Package.Config.Default|DefaultStripped|Config,Package.Microcode.Default|DefaultStripped] +PACKAGE.INF +\[.] +BASE_NAME = $(BASE_NAME) +FFS_FILEGUID = $(FILE_GUID) +FFS_FILETYPE = EFI_FV_FILETYPE_RAW +FFS_ATTRIB_CHECKSUM = TRUE + +IMAGE_SCRIPT = +{ + $(BASE_NAME).Bin +} + +[=============================================================================] +[Package.BINARY.Default,Package.Legacy16.Default,Package.Logo.Default|Logo] +PACKAGE.INF +\[.] +BASE_NAME = $(BASE_NAME) +FFS_FILEGUID = $(FILE_GUID) +FFS_FILETYPE = EFI_FV_FILETYPE_FREEFORM +FFS_ATTRIB_CHECKSUM = TRUE + +IMAGE_SCRIPT = +{ + Compress ($(COMPRESS_METHOD)) { + Tool ( $(OEMTOOLPATH)\GenCRC32Section + ARGS = -i $(DEST_DIR)\$(BASE_NAME).sec + -o $(DEST_DIR)\$(BASE_NAME).crc32 + OUTPUT = $(DEST_DIR)\$(BASE_NAME).crc32 + ) + } +} + +[=============================================================================] +# +# Package definition for TE files +# +[Package.PE32_PEIM.TE_PEIM] +PACKAGE.INF +\[.] +BASE_NAME = $(BASE_NAME) +FFS_FILEGUID = $(FILE_GUID) +FFS_FILETYPE = EFI_FV_FILETYPE_PEIM +FFS_ATTRIB_CHECKSUM = TRUE + +IMAGE_SCRIPT = +{ + $(BASE_NAME).dpx + $(BASE_NAME).tes + $(BASE_NAME).ui + $(BASE_NAME).ver +} + +[=============================================================================] +# +# Package definition to put the IFR data in a separate section in the +# FFS file. +# +[Package.BS_DRIVER.Ifr_Bin] +PACKAGE.INF +\[.] +BASE_NAME = $(BASE_NAME) +FFS_FILEGUID = $(FILE_GUID) +FFS_FILETYPE = EFI_FV_FILETYPE_DRIVER +FFS_ATTRIB_CHECKSUM = TRUE + +IMAGE_SCRIPT = +{ + Compress ($(COMPRESS_METHOD)) { + Tool ( + $(OEMTOOLPATH)\GenCRC32Section + ARGS= -i $(DEST_DIR)\$(BASE_NAME).dpx + $(DEST_DIR)\$(BASE_NAME).pe32 + $(DEST_DIR)\$(BASE_NAME).ui + $(DEST_DIR)\$(BASE_NAME).ver + $(DEST_DIR)\$(BASE_NAME)IfrBin.sec + -o $(DEST_DIR)\$(BASE_NAME).crc32 + OUTPUT = $(DEST_DIR)\$(BASE_NAME).crc32 + ) + } +} + +[=============================================================================] +[Package.PEI_CORE.Default] +PACKAGE.INF +\[.] +BASE_NAME = $(BASE_NAME) +FFS_FILEGUID = $(FILE_GUID) +FFS_FILETYPE = EFI_FV_FILETYPE_PEI_CORE +FFS_ATTRIB_CHECKSUM = TRUE + +IMAGE_SCRIPT = +{ \ + $(BASE_NAME).pe32 \ + $(BASE_NAME).ui \ + $(BASE_NAME).ver \ +} + +[=============================================================================] +[Package.PEI_CORE.TE_PEIM] +PACKAGE.INF +\[.] +BASE_NAME = $(BASE_NAME) +FFS_FILEGUID = $(FILE_GUID) +FFS_FILETYPE = EFI_FV_FILETYPE_PEI_CORE +FFS_ATTRIB_CHECKSUM = TRUE + +IMAGE_SCRIPT = +{ \ + $(BASE_NAME).tes \ + $(BASE_NAME).ui \ + $(BASE_NAME).ver \ +} + +[=============================================================================] +[Package.PE32_PEIM.Default] +PACKAGE.INF +\[.] +BASE_NAME = $(BASE_NAME) +FFS_FILEGUID = $(FILE_GUID) +FFS_FILETYPE = EFI_FV_FILETYPE_PEIM +FFS_ATTRIB_CHECKSUM = TRUE + +IMAGE_SCRIPT = +{ \ + $(BASE_NAME).dpx \ + $(BASE_NAME).pe32 \ + $(BASE_NAME).ui \ + $(BASE_NAME).ver \ +} + +[=============================================================================] +[Package.PE32_PEIM.Relocatable] +PACKAGE.INF +\[.] +BASE_NAME = $(BASE_NAME) +FFS_FILEGUID = $(FILE_GUID) +FFS_FILETYPE = EFI_FV_FILETYPE_PEIM +FFS_ATTRIB_CHECKSUM = TRUE + +IMAGE_SCRIPT = +{ \ + $(BASE_NAME).dpx \ + $(BASE_NAME).pe32 \ +} + +[=============================================================================] +[Package.PE32_PEIM.CompressPEIM] +PACKAGE.INF +\[.] +BASE_NAME = $(BASE_NAME) +FFS_FILEGUID = $(FILE_GUID) +FFS_FILETYPE = EFI_FV_FILETYPE_PEIM +FFS_ATTRIB_CHECKSUM = TRUE + +IMAGE_SCRIPT = +{ + $(BASE_NAME).dpx + Compress ($(COMPRESS_METHOD)) { + $(BASE_NAME).pe32 + $(BASE_NAME).ui + $(BASE_NAME).ver + } +} + +[=============================================================================] +[Package.COMBINED_PEIM_DRIVER.Default] +PACKAGE.INF +\[.] +BASE_NAME = $(BASE_NAME) +FFS_FILEGUID = $(FILE_GUID) +FFS_FILETYPE = EFI_FV_FILETYPE_COMBINED_PEIM_DRIVER +FFS_ATTRIB_CHECKSUM = TRUE + +IMAGE_SCRIPT = +{ \ + $(BASE_NAME).dpx \ + $(BASE_NAME).dpxd \ + $(BASE_NAME).pe32 \ + $(BASE_NAME).ui \ + $(BASE_NAME).ver \ +} + +[=============================================================================] +[Package.BS_DRIVER.DxeMain] +PACKAGE.INF +\[.] +BASE_NAME = $(BASE_NAME) +FFS_FILEGUID = $(FILE_GUID) +FFS_FILETYPE = EFI_FV_FILETYPE_DXE_CORE +FFS_ATTRIB_CHECKSUM = TRUE + +IMAGE_SCRIPT = +{ + Compress ($(COMPRESS_METHOD)) { + $(BASE_NAME).pe32 + $(BASE_NAME).ui + $(BASE_NAME).ver + } +} + + +[=============================================================================] +[Package.BS_DRIVER.Default,Package.RT_DRIVER.Default] +PACKAGE.INF +\[.] +BASE_NAME = $(BASE_NAME) +FFS_FILEGUID = $(FILE_GUID) +FFS_FILETYPE = EFI_FV_FILETYPE_DRIVER +FFS_ATTRIB_CHECKSUM = TRUE + +IMAGE_SCRIPT = +{ + Compress ($(COMPRESS_METHOD)) { + Tool ( + $(OEMTOOLPATH)\GenCRC32Section + ARGS= -i $(DEST_DIR)\$(BASE_NAME).dpx + $(DEST_DIR)\$(BASE_NAME).pe32 + $(DEST_DIR)\$(BASE_NAME).ui + $(DEST_DIR)\$(BASE_NAME).ver + -o $(DEST_DIR)\$(BASE_NAME).crc32 + OUTPUT = $(DEST_DIR)\$(BASE_NAME).crc32 + ) + } +} + +[=============================================================================] +[Package.FvImageFile.Default] +PACKAGE.INF +\[.] +BASE_NAME = $(BASE_NAME) +FFS_FILEGUID = $(FILE_GUID) +FFS_FILETYPE = EFI_FV_FILETYPE_FIRMWARE_VOLUME_IMAGE +FFS_ATTRIB_CHECKSUM = TRUE + +IMAGE_SCRIPT = +{ + Compress ($(COMPRESS_METHOD)) { + Tool ( + $(OEMTOOLPATH)\GenCRC32Section + ARGS= -i $(DEST_DIR)\$(SOURCE_FV)Fv.sec + -o $(DEST_DIR)\$(BASE_NAME)fv.crc32 + OUTPUT = $(DEST_DIR)\$(BASE_NAME)fv.crc32 + ) + } +} + +[=============================================================================] +# +# Define a package that "signs" our capsule cargo FV +# +[Package.FvImageFile.SignedFVPackage] +PACKAGE.INF +\[.] +BASE_NAME = $(BASE_NAME) +FFS_FILEGUID = $(FILE_GUID) +FFS_FILETYPE = EFI_FV_FILETYPE_FIRMWARE_VOLUME_IMAGE +FFS_ATTRIB_CHECKSUM = TRUE + +IMAGE_SCRIPT = +{ + Tool ( + $(OEMTOOLPATH)\GenCRC32Section + ARGS= -i $(DEST_DIR)\$(SOURCE_FV)Fv.sec + -o $(DEST_DIR)\$(BASE_NAME).crc32 + OUTPUT = $(DEST_DIR)\$(BASE_NAME).crc32 + ) +} + +[=============================================================================] +[Package.FvImageFile.FvMainCompact] +PACKAGE.INF +\[.] +BASE_NAME = $(BASE_NAME) +FFS_FILEGUID = $(FILE_GUID) +FFS_FILETYPE = EFI_FV_FILETYPE_FIRMWARE_VOLUME_IMAGE +FFS_ATTRIB_CHECKSUM = TRUE + +IMAGE_SCRIPT = +{ + Compress ($(COMPRESS_METHOD)) { + Blank.pad + $(SOURCE_FV)Fv.sec + } +} +[=============================================================================] +# +# Stripped package descriptions for size reduction. +# +[=============================================================================] +[Package.APPLICATION.DefaultStripped] +PACKAGE.INF +\[.] +BASE_NAME = $(BASE_NAME) +FFS_FILEGUID = $(FILE_GUID) +FFS_FILETYPE = EFI_FV_FILETYPE_APPLICATION +FFS_ATTRIB_CHECKSUM = TRUE + +IMAGE_SCRIPT = +{ + Compress ($(COMPRESS_METHOD)) { + $(DEST_DIR)\$(BASE_NAME).pe32 + } +} + +[=============================================================================] +[Package.BINARY.DefaultStripped,Package.Legacy16.DefaultStripped,Package.Logo.DefaultStripped|LogoStripped] +PACKAGE.INF +\[.] +BASE_NAME = $(BASE_NAME) +FFS_FILEGUID = $(FILE_GUID) +FFS_FILETYPE = EFI_FV_FILETYPE_FREEFORM +FFS_ATTRIB_CHECKSUM = TRUE + +IMAGE_SCRIPT = +{ + Compress ($(COMPRESS_METHOD)) { + $(DEST_DIR)\$(BASE_NAME).sec + } +} + +[=============================================================================] +[Package.PEI_CORE.DefaultStripped] +PACKAGE.INF +\[.] +BASE_NAME = $(BASE_NAME) +FFS_FILEGUID = $(FILE_GUID) +FFS_FILETYPE = EFI_FV_FILETYPE_PEI_CORE +FFS_ATTRIB_CHECKSUM = TRUE + +IMAGE_SCRIPT = +{ \ + $(BASE_NAME).pe32 \ +} + +[=============================================================================] +[Package.PEI_CORE.TE_PEIMStripped] +PACKAGE.INF +\[.] +BASE_NAME = $(BASE_NAME) +FFS_FILEGUID = $(FILE_GUID) +FFS_FILETYPE = EFI_FV_FILETYPE_PEI_CORE +FFS_ATTRIB_CHECKSUM = TRUE + +IMAGE_SCRIPT = +{ + $(BASE_NAME).tes +} +[=============================================================================] +[Package.PE32_PEIM.DefaultStripped] +PACKAGE.INF +\[.] +BASE_NAME = $(BASE_NAME) +FFS_FILEGUID = $(FILE_GUID) +FFS_FILETYPE = EFI_FV_FILETYPE_PEIM +FFS_ATTRIB_CHECKSUM = TRUE + +IMAGE_SCRIPT = +{ \ + $(BASE_NAME).dpx \ + $(BASE_NAME).pe32 \ +} + +[=============================================================================] +[Package.PE32_PEIM.CompressPEIMStripped] +PACKAGE.INF +\[.] +BASE_NAME = $(BASE_NAME) +FFS_FILEGUID = $(FILE_GUID) +FFS_FILETYPE = EFI_FV_FILETYPE_PEIM +FFS_ATTRIB_CHECKSUM = TRUE + +IMAGE_SCRIPT = +{ + $(BASE_NAME).dpx + Compress ($(COMPRESS_METHOD)) { + $(BASE_NAME).pe32 + } +} + +[=============================================================================] +# +# Package definition for TE files +# +[Package.PE32_PEIM.TE_PEIMStripped] +PACKAGE.INF +\[.] +BASE_NAME = $(BASE_NAME) +FFS_FILEGUID = $(FILE_GUID) +FFS_FILETYPE = EFI_FV_FILETYPE_PEIM +FFS_ATTRIB_CHECKSUM = TRUE + +IMAGE_SCRIPT = +{ + $(BASE_NAME).dpx + $(BASE_NAME).tes +} + +[=============================================================================] +[Package.COMBINED_PEIM_DRIVER.DefaultStripped] +PACKAGE.INF +\[.] +BASE_NAME = $(BASE_NAME) +FFS_FILEGUID = $(FILE_GUID) +FFS_FILETYPE = EFI_FV_FILETYPE_COMBINED_PEIM_DRIVER +FFS_ATTRIB_CHECKSUM = TRUE + +IMAGE_SCRIPT = +{ \ + $(BASE_NAME).dpx \ + $(BASE_NAME).dpxd \ + $(BASE_NAME).pe32 \ +} + +[=============================================================================] +[Package.BS_DRIVER.DxeMainStripped] +PACKAGE.INF +\[.] +BASE_NAME = $(BASE_NAME) +FFS_FILEGUID = $(FILE_GUID) +FFS_FILETYPE = EFI_FV_FILETYPE_DXE_CORE +FFS_ATTRIB_CHECKSUM = TRUE + +IMAGE_SCRIPT = +{ + Compress ($(COMPRESS_METHOD)) { + $(BASE_NAME).pe32 + } +} + + +[=============================================================================] +[Package.BS_DRIVER.DefaultStripped,Package.RT_DRIVER.DefaultStripped] +PACKAGE.INF +\[.] +BASE_NAME = $(BASE_NAME) +FFS_FILEGUID = $(FILE_GUID) +FFS_FILETYPE = EFI_FV_FILETYPE_DRIVER +FFS_ATTRIB_CHECKSUM = TRUE + +IMAGE_SCRIPT = +{ + Compress ($(COMPRESS_METHOD)) { + $(DEST_DIR)\$(BASE_NAME).dpx + $(DEST_DIR)\$(BASE_NAME).pe32 + } +} + + +[=============================================================================] +[Package.FvImageFile.DefaultStripped] +PACKAGE.INF +\[.] +BASE_NAME = $(BASE_NAME) +FFS_FILEGUID = $(FILE_GUID) +FFS_FILETYPE = EFI_FV_FILETYPE_FIRMWARE_VOLUME_IMAGE +FFS_ATTRIB_CHECKSUM = TRUE + +IMAGE_SCRIPT = +{ + Compress ($(COMPRESS_METHOD)) { + $(DEST_DIR)\$(SOURCE_FV)Fv.sec + } +} + +[=============================================================================] +[Package.SECURITY_CORE.Default|DefaultStripped] +PACKAGE.INF +\[.] +BASE_NAME = $(BASE_NAME) +FFS_FILEGUID = $(FILE_GUID) +FFS_FILETYPE = EFI_FV_FILETYPE_SECURITY_CORE +FFS_ATTRIB_CHECKSUM = FALSE + +IMAGE_SCRIPT = +{ \ + Blank1.pad \ + $(BASE_NAME).tes \ + ResetVec.raw \ +} + +[=============================================================================] diff --git a/EdkCompatibilityPkg/Sample/Platform/CommonIpf.dsc b/EdkCompatibilityPkg/Sample/Platform/CommonIpf.dsc new file mode 100644 index 0000000000..13bfe9171b --- /dev/null +++ b/EdkCompatibilityPkg/Sample/Platform/CommonIpf.dsc @@ -0,0 +1,391 @@ +#/*++ +# +# Copyright (c) 2004 - 2007, Intel Corporation +# All rights reserved. This program and the accompanying materials +# are licensed and made available under the terms and conditions of the BSD License +# which accompanies this distribution. The full text of the license may be found at +# http://opensource.org/licenses/bsd-license.php +# +# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +# +# Module Name: +# +# CommonIpf.dsc +# +# Abstract: +# +# This is the build description file containing the processor architecture +# dependent build instructions. +# +# Notes: +# +# The info in this file is broken down into sections. The start of a section +# is designated by a "[" in the first column. So the [=====] separater ends +# a section. +# +#--*/ + + +[=============================================================================] +# +# These are the package descriptions. They are tagged as +# [Package.$(COMPONENT_TYPE).$(PACKAGE)], where COMPONENT_TYPE is typically +# defined in the component INF file, and PACKAGE is typically specified +# in the components section in the main DSC file. Main DSC file can also define +# platform specific package descriptions. +# + +[=============================================================================] +[Package.APPLICATION.Default] +PACKAGE.INF +\[.] +BASE_NAME = $(BASE_NAME) +FFS_FILEGUID = $(FILE_GUID) +FFS_FILETYPE = EFI_FV_FILETYPE_APPLICATION +FFS_ATTRIB_CHECKSUM = TRUE + +IMAGE_SCRIPT = +{ + Compress ($(COMPRESS_METHOD)) { + Tool ( + $(OEMTOOLPATH)\GenCRC32Section + ARGS= -i $(DEST_DIR)\$(BASE_NAME).pe32 + $(DEST_DIR)\$(BASE_NAME).ui + $(DEST_DIR)\$(BASE_NAME).ver + -o $(DEST_DIR)\$(BASE_NAME).crc32 + OUTPUT = $(DEST_DIR)\$(BASE_NAME).crc32 + ) + } +} + +[=============================================================================] +[Package.Apriori.Default,Package.FILE.Default] +PACKAGE.INF +\[.] +BASE_NAME = $(BASE_NAME) +FFS_FILEGUID = $(FILE_GUID) +FFS_FILETYPE = EFI_FV_FILETYPE_FREEFORM +FFS_ATTRIB_CHECKSUM = TRUE + +IMAGE_SCRIPT = +{ + $(BASE_NAME).sec +} + +[=============================================================================] +[Package.RAWFILE.Default,Package.Config.Default|Config] +PACKAGE.INF +\[.] +BASE_NAME = $(BASE_NAME) +FFS_FILEGUID = $(FILE_GUID) +FFS_FILETYPE = EFI_FV_FILETYPE_RAW +FFS_ATTRIB_CHECKSUM = TRUE + +IMAGE_SCRIPT = +{ + $(BASE_NAME).Bin +} + +[=============================================================================] +[Package.BINARY.Default,Package.Legacy16.Default,Package.Logo.Default|Logo] +PACKAGE.INF +\[.] +BASE_NAME = $(BASE_NAME) +FFS_FILEGUID = $(FILE_GUID) +FFS_FILETYPE = EFI_FV_FILETYPE_FREEFORM +FFS_ATTRIB_CHECKSUM = TRUE + +IMAGE_SCRIPT = +{ + Compress ($(COMPRESS_METHOD)) { + Tool ( $(OEMTOOLPATH)\GenCRC32Section + ARGS = -i $(DEST_DIR)\$(BASE_NAME).sec + -o $(DEST_DIR)\$(BASE_NAME).crc32 + OUTPUT = $(DEST_DIR)\$(BASE_NAME).crc32 + ) + } +} + +[=============================================================================] +# +# Package definition for TE files +# +[Package.PE32_PEIM.TE_PEIM] +PACKAGE.INF +\[.] +BASE_NAME = $(BASE_NAME) +FFS_FILEGUID = $(FILE_GUID) +FFS_FILETYPE = EFI_FV_FILETYPE_PEIM +FFS_ATTRIB_CHECKSUM = TRUE + +IMAGE_SCRIPT = +{ + $(BASE_NAME).dpx + $(BASE_NAME).tes + $(BASE_NAME).ui + $(BASE_NAME).ver +} + +[=============================================================================] +# +# Package definition to put the IFR data in a separate section in the +# FFS file. +# +[Package.BS_DRIVER.Ifr_Bin] +PACKAGE.INF +\[.] +BASE_NAME = $(BASE_NAME) +FFS_FILEGUID = $(FILE_GUID) +FFS_FILETYPE = EFI_FV_FILETYPE_DRIVER +FFS_ATTRIB_CHECKSUM = TRUE + +IMAGE_SCRIPT = +{ + Compress ($(COMPRESS_METHOD)) { + Tool ( + $(OEMTOOLPATH)\GenCRC32Section + ARGS= -i $(DEST_DIR)\$(BASE_NAME).dpx + $(DEST_DIR)\$(BASE_NAME).pe32 + $(DEST_DIR)\$(BASE_NAME).ui + $(DEST_DIR)\$(BASE_NAME).ver + $(DEST_DIR)\$(BASE_NAME)IfrBin.sec + -o $(DEST_DIR)\$(BASE_NAME).crc32 + OUTPUT = $(DEST_DIR)\$(BASE_NAME).crc32 + ) + } +} + +[=============================================================================] +[Package.SECURITY_CORE.Default] +PACKAGE.INF +\[.] +BASE_NAME = $(BASE_NAME) +FFS_FILEGUID = $(FILE_GUID) +FFS_FILETYPE = EFI_FV_FILETYPE_SECURITY_CORE +FFS_ATTRIB_CHECKSUM = TRUE +FFS_ALIGNMENT = 0x1 + +IMAGE_SCRIPT = +{ \ + Blank.pad \ + $(BASE_NAME).pe32 \ + $(BASE_NAME).ui \ + $(BASE_NAME).ver \ +} + +[=============================================================================] +[Package.PEI_CORE.Default] +PACKAGE.INF +\[.] +BASE_NAME = $(BASE_NAME) +FFS_FILEGUID = $(FILE_GUID) +FFS_FILETYPE = EFI_FV_FILETYPE_PEI_CORE +FFS_ATTRIB_CHECKSUM = TRUE +FFS_ALIGNMENT = 0x1 + +IMAGE_SCRIPT = +{ \ + Blank.pad \ + $(BASE_NAME).pe32 \ + $(BASE_NAME).ui \ + $(BASE_NAME).ver \ +} + +[=============================================================================] +[Package.PE32_PEIM.Default] +PACKAGE.INF +\[.] +BASE_NAME = $(BASE_NAME) +FFS_FILEGUID = $(FILE_GUID) +FFS_FILETYPE = EFI_FV_FILETYPE_PEIM +FFS_ATTRIB_CHECKSUM = TRUE +FFS_ALIGNMENT = 0x1 + +IMAGE_SCRIPT = +{ \ + Blank.pad \ + $(BASE_NAME).pe32 \ + $(BASE_NAME).dpx \ + $(BASE_NAME).ui \ + $(BASE_NAME).ver \ +} + +[=============================================================================] +[Package.PE32_PEIM.CompressPEIM] +PACKAGE.INF +\[.] +BASE_NAME = $(BASE_NAME) +FFS_FILEGUID = $(FILE_GUID) +FFS_FILETYPE = EFI_FV_FILETYPE_PEIM +FFS_ATTRIB_CHECKSUM = TRUE + +IMAGE_SCRIPT = +{ + $(BASE_NAME).dpx + Compress ($(COMPRESS_METHOD)) { + $(BASE_NAME).pe32 + $(BASE_NAME).ui + $(BASE_NAME).ver + } +} + +[=============================================================================] +[Package.COMBINED_PEIM_DRIVER.Default] +PACKAGE.INF +\[.] +BASE_NAME = $(BASE_NAME) +FFS_FILEGUID = $(FILE_GUID) +FFS_FILETYPE = EFI_FV_FILETYPE_COMBINED_PEIM_DRIVER +FFS_ATTRIB_CHECKSUM = TRUE +FFS_ALIGNMENT = 0x1 + +IMAGE_SCRIPT = +{ \ + Blank.pad \ + $(BASE_NAME).pe32 \ + $(BASE_NAME).dpx \ + $(BASE_NAME).dpxd \ + $(BASE_NAME).ui \ + $(BASE_NAME).ver \ +} + +[=============================================================================] +[Package.PIC_PEIM.Default] +PACKAGE.INF +\[.] +BASE_NAME = $(BASE_NAME) +FFS_FILEGUID = $(FILE_GUID) +FFS_FILETYPE = EFI_FV_FILETYPE_PEIM +FFS_ATTRIB_CHECKSUM = TRUE +FFS_ALIGNMENT = 0x1 + +IMAGE_SCRIPT = +{ \ + Blank.pad \ + $(BASE_NAME).dpx \ + $(BASE_NAME).pic \ + $(BASE_NAME).ui \ + $(BASE_NAME).ver \ +} + + +[=============================================================================] +[Package.DxeIplPad.Default] +PACKAGE.INF +\[.] +BASE_NAME = $(BASE_NAME) +FFS_FILEGUID = $(FILE_GUID) +FFS_FILETYPE = EFI_FV_FILETYPE_RAW +FFS_ATTRIB_CHECKSUM = TRUE +FFS_ALIGNMENT = 0x7 + +IMAGE_SCRIPT = +{ \ + $(BASE_NAME).pad \ +} + + +[=============================================================================] +[Package.BS_DRIVER.DxeMain] +PACKAGE.INF +\[.] +BASE_NAME = $(BASE_NAME) +FFS_FILEGUID = $(FILE_GUID) +FFS_FILETYPE = EFI_FV_FILETYPE_DXE_CORE +FFS_ATTRIB_CHECKSUM = TRUE + +IMAGE_SCRIPT = +{ + Compress ($(COMPRESS_METHOD)) { + $(BASE_NAME).pe32 + $(BASE_NAME).ui + $(BASE_NAME).ver + } +} + + +[=============================================================================] +[Package.BS_DRIVER.Default,Package.RT_DRIVER.Default,Package.SAL_RT_DRIVER.Default] +PACKAGE.INF +\[.] +BASE_NAME = $(BASE_NAME) +FFS_FILEGUID = $(FILE_GUID) +FFS_FILETYPE = EFI_FV_FILETYPE_DRIVER +FFS_ATTRIB_CHECKSUM = TRUE + +IMAGE_SCRIPT = +{ + Compress ($(COMPRESS_METHOD)) { + Tool ( + $(OEMTOOLPATH)\GenCRC32Section + ARGS= -i $(DEST_DIR)\$(BASE_NAME).dpx + $(DEST_DIR)\$(BASE_NAME).pe32 + $(DEST_DIR)\$(BASE_NAME).ui + $(DEST_DIR)\$(BASE_NAME).ver + -o $(DEST_DIR)\$(BASE_NAME).crc32 + OUTPUT = $(DEST_DIR)\$(BASE_NAME).crc32 + ) + } +} + +[=============================================================================] +[Package.FvImageFile.Default] +PACKAGE.INF +\[.] +BASE_NAME = $(BASE_NAME) +FFS_FILEGUID = $(FILE_GUID) +FFS_FILETYPE = EFI_FV_FILETYPE_FIRMWARE_VOLUME_IMAGE +FFS_ATTRIB_CHECKSUM = TRUE + +IMAGE_SCRIPT = +{ + Compress ($(COMPRESS_METHOD)) { + Tool ( + $(OEMTOOLPATH)\GenCRC32Section + ARGS= -i $(DEST_DIR)\$(SOURCE_FV)Fv.sec + -o $(DEST_DIR)\$(BASE_NAME)fv.crc32 + OUTPUT = $(DEST_DIR)\$(BASE_NAME)fv.crc32 + ) + } +} + +[=============================================================================] +# +# Define a package that "signs" our capsule cargo FV +# +[Package.FvImageFile.SignedFVPackage] +PACKAGE.INF +\[.] +BASE_NAME = $(BASE_NAME) +FFS_FILEGUID = $(FILE_GUID) +FFS_FILETYPE = EFI_FV_FILETYPE_FIRMWARE_VOLUME_IMAGE +FFS_ATTRIB_CHECKSUM = TRUE + +IMAGE_SCRIPT = +{ + Tool ( + $(OEMTOOLPATH)\GenCRC32Section + ARGS= -i $(DEST_DIR)\$(SOURCE_FV)Fv.sec + -o $(DEST_DIR)\$(BASE_NAME).crc32 + OUTPUT = $(DEST_DIR)\$(BASE_NAME).crc32 + ) +} + +[=============================================================================] +[Package.FvImageFile.FvMainCompact] +PACKAGE.INF +\[.] +BASE_NAME = $(BASE_NAME) +FFS_FILEGUID = $(FILE_GUID) +FFS_FILETYPE = EFI_FV_FILETYPE_FIRMWARE_VOLUME_IMAGE +FFS_ATTRIB_CHECKSUM = TRUE + +IMAGE_SCRIPT = +{ + Compress ($(COMPRESS_METHOD)) { + Blank.pad + $(SOURCE_FV)Fv.sec + } +} +[=============================================================================] diff --git a/EdkCompatibilityPkg/Sample/Platform/CommonX64.dsc b/EdkCompatibilityPkg/Sample/Platform/CommonX64.dsc new file mode 100644 index 0000000000..4314049361 --- /dev/null +++ b/EdkCompatibilityPkg/Sample/Platform/CommonX64.dsc @@ -0,0 +1,558 @@ +#/*++ +# +# Copyright (c) 2005 - 2007, Intel Corporation +# All rights reserved. This program and the accompanying materials +# are licensed and made available under the terms and conditions of the BSD License +# which accompanies this distribution. The full text of the license may be found at +# http://opensource.org/licenses/bsd-license.php +# +# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +# +# Module Name: +# +# CommonX64.dsc +# +# Abstract: +# +# This is the build description file containing the processor architecture +# dependent build instructions. +# +# Notes: +# +# The info in this file is broken down into sections. The start of a section +# is designated by a "[" in the first column. So the [=====] separater ends +# a section. +# +#--*/ + + +[=============================================================================] +# +# These are the package descriptions. They are tagged as +# [Package.$(COMPONENT_TYPE).$(PACKAGE)], where COMPONENT_TYPE is typically +# defined in the component INF file, and PACKAGE is typically specified +# in the components section in the main DSC file. Main DSC file can also define +# platform specific package descriptions. +# + +[=============================================================================] +[Package.APPLICATION.Default] +PACKAGE.INF +\[.] +BASE_NAME = $(BASE_NAME) +FFS_FILEGUID = $(FILE_GUID) +FFS_FILETYPE = EFI_FV_FILETYPE_APPLICATION +FFS_ATTRIB_CHECKSUM = TRUE + +IMAGE_SCRIPT = +{ + Compress ($(COMPRESS_METHOD)) { + Tool ( + $(OEMTOOLPATH)\GenCRC32Section + ARGS= -i $(DEST_DIR)\$(BASE_NAME).pe32 + $(DEST_DIR)\$(BASE_NAME).ui + $(DEST_DIR)\$(BASE_NAME).ver + -o $(DEST_DIR)\$(BASE_NAME).crc32 + OUTPUT = $(DEST_DIR)\$(BASE_NAME).crc32 + ) + } +} + +[=============================================================================] +[Package.Apriori.Default|DefaultStripped,Package.FILE.Default|DefaultStripped] +PACKAGE.INF +\[.] +BASE_NAME = $(BASE_NAME) +FFS_FILEGUID = $(FILE_GUID) +FFS_FILETYPE = EFI_FV_FILETYPE_FREEFORM +FFS_ATTRIB_CHECKSUM = TRUE + +IMAGE_SCRIPT = +{ + $(BASE_NAME).sec +} + +[=============================================================================] +[Package.RAWFILE.Default|DefaultStripped,Package.Config.Default|DefaultStripped|Config,Package.Microcode.Default|DefaultStripped] +PACKAGE.INF +\[.] +BASE_NAME = $(BASE_NAME) +FFS_FILEGUID = $(FILE_GUID) +FFS_FILETYPE = EFI_FV_FILETYPE_RAW +FFS_ATTRIB_CHECKSUM = TRUE + +IMAGE_SCRIPT = +{ + $(BASE_NAME).Bin +} + +[=============================================================================] +[Package.BINARY.Default,Package.Legacy16.Default,Package.Logo.Default|Logo] +PACKAGE.INF +\[.] +BASE_NAME = $(BASE_NAME) +FFS_FILEGUID = $(FILE_GUID) +FFS_FILETYPE = EFI_FV_FILETYPE_FREEFORM +FFS_ATTRIB_CHECKSUM = TRUE + +IMAGE_SCRIPT = +{ + Compress ($(COMPRESS_METHOD)) { + Tool ( $(OEMTOOLPATH)\GenCRC32Section + ARGS = -i $(DEST_DIR)\$(BASE_NAME).sec + -o $(DEST_DIR)\$(BASE_NAME).crc32 + OUTPUT = $(DEST_DIR)\$(BASE_NAME).crc32 + ) + } +} + +[=============================================================================] +# +# Package definition for TE files +# +[Package.PE32_PEIM.TE_PEIM] +PACKAGE.INF +\[.] +BASE_NAME = $(BASE_NAME) +FFS_FILEGUID = $(FILE_GUID) +FFS_FILETYPE = EFI_FV_FILETYPE_PEIM +FFS_ATTRIB_CHECKSUM = TRUE + +IMAGE_SCRIPT = +{ + $(BASE_NAME).dpx + $(BASE_NAME).tes + $(BASE_NAME).ui + $(BASE_NAME).ver +} + +[=============================================================================] +# +# Package definition to put the IFR data in a separate section in the +# FFS file. +# +[Package.BS_DRIVER.Ifr_Bin] +PACKAGE.INF +\[.] +BASE_NAME = $(BASE_NAME) +FFS_FILEGUID = $(FILE_GUID) +FFS_FILETYPE = EFI_FV_FILETYPE_DRIVER +FFS_ATTRIB_CHECKSUM = TRUE + +IMAGE_SCRIPT = +{ + Compress ($(COMPRESS_METHOD)) { + Tool ( + $(OEMTOOLPATH)\GenCRC32Section + ARGS= -i $(DEST_DIR)\$(BASE_NAME).dpx + $(DEST_DIR)\$(BASE_NAME).pe32 + $(DEST_DIR)\$(BASE_NAME).ui + $(DEST_DIR)\$(BASE_NAME).ver + $(DEST_DIR)\$(BASE_NAME)IfrBin.sec + -o $(DEST_DIR)\$(BASE_NAME).crc32 + OUTPUT = $(DEST_DIR)\$(BASE_NAME).crc32 + ) + } +} + +[=============================================================================] +[Package.PEI_CORE.Default] +PACKAGE.INF +\[.] +BASE_NAME = $(BASE_NAME) +FFS_FILEGUID = $(FILE_GUID) +FFS_FILETYPE = EFI_FV_FILETYPE_PEI_CORE +FFS_ATTRIB_CHECKSUM = TRUE + +IMAGE_SCRIPT = +{ \ + $(BASE_NAME).pe32 \ + $(BASE_NAME).ui \ + $(BASE_NAME).ver \ +} + +[=============================================================================] +[Package.PEI_CORE.TE_PEIM] +PACKAGE.INF +\[.] +BASE_NAME = $(BASE_NAME) +FFS_FILEGUID = $(FILE_GUID) +FFS_FILETYPE = EFI_FV_FILETYPE_PEI_CORE +FFS_ATTRIB_CHECKSUM = TRUE + +IMAGE_SCRIPT = +{ \ + $(BASE_NAME).tes \ + $(BASE_NAME).ui \ + $(BASE_NAME).ver \ +} + +[=============================================================================] +[Package.PE32_PEIM.Default] +PACKAGE.INF +\[.] +BASE_NAME = $(BASE_NAME) +FFS_FILEGUID = $(FILE_GUID) +FFS_FILETYPE = EFI_FV_FILETYPE_PEIM +FFS_ATTRIB_CHECKSUM = TRUE + +IMAGE_SCRIPT = +{ \ + $(BASE_NAME).dpx \ + $(BASE_NAME).pe32 \ + $(BASE_NAME).ui \ + $(BASE_NAME).ver \ +} + +[=============================================================================] +[Package.PE32_PEIM.Relocatable] +PACKAGE.INF +\[.] +BASE_NAME = $(BASE_NAME) +FFS_FILEGUID = $(FILE_GUID) +FFS_FILETYPE = EFI_FV_FILETYPE_PEIM +FFS_ATTRIB_CHECKSUM = TRUE + +IMAGE_SCRIPT = +{ \ + $(BASE_NAME).dpx \ + $(BASE_NAME).pe32 \ +} + +[=============================================================================] +[Package.PE32_PEIM.CompressPEIM] +PACKAGE.INF +\[.] +BASE_NAME = $(BASE_NAME) +FFS_FILEGUID = $(FILE_GUID) +FFS_FILETYPE = EFI_FV_FILETYPE_PEIM +FFS_ATTRIB_CHECKSUM = TRUE + +IMAGE_SCRIPT = +{ + $(BASE_NAME).dpx + Compress ($(COMPRESS_METHOD)) { + $(BASE_NAME).pe32 + $(BASE_NAME).ui + $(BASE_NAME).ver + } +} + +[=============================================================================] +[Package.COMBINED_PEIM_DRIVER.Default] +PACKAGE.INF +\[.] +BASE_NAME = $(BASE_NAME) +FFS_FILEGUID = $(FILE_GUID) +FFS_FILETYPE = EFI_FV_FILETYPE_COMBINED_PEIM_DRIVER +FFS_ATTRIB_CHECKSUM = TRUE + +IMAGE_SCRIPT = +{ \ + $(BASE_NAME).dpx \ + $(BASE_NAME).dpxd \ + $(BASE_NAME).pe32 \ + $(BASE_NAME).ui \ + $(BASE_NAME).ver \ +} + +[=============================================================================] +[Package.BS_DRIVER.DxeMain] +PACKAGE.INF +\[.] +BASE_NAME = $(BASE_NAME) +FFS_FILEGUID = $(FILE_GUID) +FFS_FILETYPE = EFI_FV_FILETYPE_DXE_CORE +FFS_ATTRIB_CHECKSUM = TRUE + +IMAGE_SCRIPT = +{ + Compress ($(COMPRESS_METHOD)) { + $(BASE_NAME).pe32 + $(BASE_NAME).ui + $(BASE_NAME).ver + } +} + + +[=============================================================================] +[Package.BS_DRIVER.Default,Package.RT_DRIVER.Default,Package.SAL_RT_DRIVER.Default] +PACKAGE.INF +\[.] +BASE_NAME = $(BASE_NAME) +FFS_FILEGUID = $(FILE_GUID) +FFS_FILETYPE = EFI_FV_FILETYPE_DRIVER +FFS_ATTRIB_CHECKSUM = TRUE + +IMAGE_SCRIPT = +{ + Compress ($(COMPRESS_METHOD)) { + Tool ( + $(OEMTOOLPATH)\GenCRC32Section + ARGS= -i $(DEST_DIR)\$(BASE_NAME).dpx + $(DEST_DIR)\$(BASE_NAME).pe32 + $(DEST_DIR)\$(BASE_NAME).ui + $(DEST_DIR)\$(BASE_NAME).ver + -o $(DEST_DIR)\$(BASE_NAME).crc32 + OUTPUT = $(DEST_DIR)\$(BASE_NAME).crc32 + ) + } +} + +[=============================================================================] +[Package.FvImageFile.Default] +PACKAGE.INF +\[.] +BASE_NAME = $(BASE_NAME) +FFS_FILEGUID = $(FILE_GUID) +FFS_FILETYPE = EFI_FV_FILETYPE_FIRMWARE_VOLUME_IMAGE +FFS_ATTRIB_CHECKSUM = TRUE + +IMAGE_SCRIPT = +{ + Compress ($(COMPRESS_METHOD)) { + Tool ( + $(OEMTOOLPATH)\GenCRC32Section + ARGS= -i $(DEST_DIR)\$(SOURCE_FV)Fv.sec + -o $(DEST_DIR)\$(BASE_NAME)fv.crc32 + OUTPUT = $(DEST_DIR)\$(BASE_NAME)fv.crc32 + ) + } +} + +[=============================================================================] +# +# Define a package that "signs" our capsule cargo FV +# +[Package.FvImageFile.SignedFVPackage] +PACKAGE.INF +\[.] +BASE_NAME = $(BASE_NAME) +FFS_FILEGUID = $(FILE_GUID) +FFS_FILETYPE = EFI_FV_FILETYPE_FIRMWARE_VOLUME_IMAGE +FFS_ATTRIB_CHECKSUM = TRUE + +IMAGE_SCRIPT = +{ + Tool ( + $(OEMTOOLPATH)\GenCRC32Section + ARGS= -i $(DEST_DIR)\$(SOURCE_FV)Fv.sec + -o $(DEST_DIR)\$(BASE_NAME).crc32 + OUTPUT = $(DEST_DIR)\$(BASE_NAME).crc32 + ) +} + +[=============================================================================] +# +# Stripped package descriptions for size reduction. +# +[=============================================================================] +[Package.APPLICATION.DefaultStripped] +PACKAGE.INF +\[.] +BASE_NAME = $(BASE_NAME) +FFS_FILEGUID = $(FILE_GUID) +FFS_FILETYPE = EFI_FV_FILETYPE_APPLICATION +FFS_ATTRIB_CHECKSUM = TRUE + +IMAGE_SCRIPT = +{ + Compress ($(COMPRESS_METHOD)) { + $(DEST_DIR)\$(BASE_NAME).pe32 + } +} + +[=============================================================================] +[Package.BINARY.DefaultStripped,Package.Legacy16.DefaultStripped,Package.Logo.DefaultStripped|LogoStripped] +PACKAGE.INF +\[.] +BASE_NAME = $(BASE_NAME) +FFS_FILEGUID = $(FILE_GUID) +FFS_FILETYPE = EFI_FV_FILETYPE_FREEFORM +FFS_ATTRIB_CHECKSUM = TRUE + +IMAGE_SCRIPT = +{ + Compress ($(COMPRESS_METHOD)) { + $(DEST_DIR)\$(BASE_NAME).sec + } +} + +[=============================================================================] +[Package.PEI_CORE.DefaultStripped] +PACKAGE.INF +\[.] +BASE_NAME = $(BASE_NAME) +FFS_FILEGUID = $(FILE_GUID) +FFS_FILETYPE = EFI_FV_FILETYPE_PEI_CORE +FFS_ATTRIB_CHECKSUM = TRUE + +IMAGE_SCRIPT = +{ \ + $(BASE_NAME).pe32 \ +} + +[=============================================================================] +[Package.PEI_CORE.TE_PEIMStripped] +PACKAGE.INF +\[.] +BASE_NAME = $(BASE_NAME) +FFS_FILEGUID = $(FILE_GUID) +FFS_FILETYPE = EFI_FV_FILETYPE_PEI_CORE +FFS_ATTRIB_CHECKSUM = TRUE + +IMAGE_SCRIPT = +{ + $(BASE_NAME).tes +} +[=============================================================================] +[Package.PE32_PEIM.DefaultStripped] +PACKAGE.INF +\[.] +BASE_NAME = $(BASE_NAME) +FFS_FILEGUID = $(FILE_GUID) +FFS_FILETYPE = EFI_FV_FILETYPE_PEIM +FFS_ATTRIB_CHECKSUM = TRUE + +IMAGE_SCRIPT = +{ \ + $(BASE_NAME).dpx \ + $(BASE_NAME).pe32 \ +} + +[=============================================================================] +[Package.PE32_PEIM.CompressPEIMStripped] +PACKAGE.INF +\[.] +BASE_NAME = $(BASE_NAME) +FFS_FILEGUID = $(FILE_GUID) +FFS_FILETYPE = EFI_FV_FILETYPE_PEIM +FFS_ATTRIB_CHECKSUM = TRUE + +IMAGE_SCRIPT = +{ + $(BASE_NAME).dpx + Compress ($(COMPRESS_METHOD)) { + $(BASE_NAME).pe32 + } +} + +[=============================================================================] +# +# Package definition for TE files +# +[Package.PE32_PEIM.TE_PEIMStripped] +PACKAGE.INF +\[.] +BASE_NAME = $(BASE_NAME) +FFS_FILEGUID = $(FILE_GUID) +FFS_FILETYPE = EFI_FV_FILETYPE_PEIM +FFS_ATTRIB_CHECKSUM = TRUE + +IMAGE_SCRIPT = +{ + $(BASE_NAME).dpx + $(BASE_NAME).tes +} + +[=============================================================================] +[Package.COMBINED_PEIM_DRIVER.DefaultStripped] +PACKAGE.INF +\[.] +BASE_NAME = $(BASE_NAME) +FFS_FILEGUID = $(FILE_GUID) +FFS_FILETYPE = EFI_FV_FILETYPE_COMBINED_PEIM_DRIVER +FFS_ATTRIB_CHECKSUM = TRUE + +IMAGE_SCRIPT = +{ \ + $(BASE_NAME).dpx \ + $(BASE_NAME).dpxd \ + $(BASE_NAME).pe32 \ +} + +[=============================================================================] +[Package.BS_DRIVER.DxeMainStripped] +PACKAGE.INF +\[.] +BASE_NAME = $(BASE_NAME) +FFS_FILEGUID = $(FILE_GUID) +FFS_FILETYPE = EFI_FV_FILETYPE_DXE_CORE +FFS_ATTRIB_CHECKSUM = TRUE + +IMAGE_SCRIPT = +{ + Compress ($(COMPRESS_METHOD)) { + $(BASE_NAME).pe32 + } +} + + +[=============================================================================] +[Package.BS_DRIVER.DefaultStripped,Package.RT_DRIVER.DefaultStripped,Package.SAL_RT_DRIVER.DefaultStripped] +PACKAGE.INF +\[.] +BASE_NAME = $(BASE_NAME) +FFS_FILEGUID = $(FILE_GUID) +FFS_FILETYPE = EFI_FV_FILETYPE_DRIVER +FFS_ATTRIB_CHECKSUM = TRUE + +IMAGE_SCRIPT = +{ + Compress ($(COMPRESS_METHOD)) { + $(DEST_DIR)\$(BASE_NAME).dpx + $(DEST_DIR)\$(BASE_NAME).pe32 + } +} + + +[=============================================================================] +[Package.FvImageFile.DefaultStripped] +PACKAGE.INF +\[.] +BASE_NAME = $(BASE_NAME) +FFS_FILEGUID = $(FILE_GUID) +FFS_FILETYPE = EFI_FV_FILETYPE_FIRMWARE_VOLUME_IMAGE +FFS_ATTRIB_CHECKSUM = TRUE + +IMAGE_SCRIPT = +{ + Compress ($(COMPRESS_METHOD)) { + $(DEST_DIR)\$(SOURCE_FV)Fv.sec + } +} + +[=============================================================================] +[Package.FvImageFile.FvMainCompact] +PACKAGE.INF +\[.] +BASE_NAME = $(BASE_NAME) +FFS_FILEGUID = $(FILE_GUID) +FFS_FILETYPE = EFI_FV_FILETYPE_FIRMWARE_VOLUME_IMAGE +FFS_ATTRIB_CHECKSUM = TRUE + +IMAGE_SCRIPT = +{ + Compress ($(COMPRESS_METHOD)) { + Blank.pad + $(SOURCE_FV)Fv.sec + } +} +[=============================================================================] +[Package.SECURITY_CORE.Default|DefaultStripped] +PACKAGE.INF +\[.] +BASE_NAME = $(BASE_NAME) +FFS_FILEGUID = $(FILE_GUID) +FFS_FILETYPE = EFI_FV_FILETYPE_SECURITY_CORE +FFS_ATTRIB_CHECKSUM = FALSE + +IMAGE_SCRIPT = +{ \ + Blank1.pad \ + $(BASE_NAME).tes \ + ResetVec.raw \ +} + +[=============================================================================] diff --git a/EdkCompatibilityPkg/Sample/Platform/EdkIIGlueLib32.dsc b/EdkCompatibilityPkg/Sample/Platform/EdkIIGlueLib32.dsc new file mode 100644 index 0000000000..5c71f41108 --- /dev/null +++ b/EdkCompatibilityPkg/Sample/Platform/EdkIIGlueLib32.dsc @@ -0,0 +1,39 @@ +#/*++ +# Copyright (c) 2006, Intel Corporation +# All rights reserved. This program and the accompanying materials +# are licensed and made available under the terms and conditions of the BSD License +# which accompanies this distribution. The full text of the license may be found at +# http://opensource.org/licenses/bsd-license.php +# +# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +#--*/ +# +# EdkII Glue Library for PEI usage (32bit) +# +$(EDK_PREFIX)Foundation\Library\EdkIIGlueLib\Library\BaseLib\BaseLib.inf +$(EDK_PREFIX)Foundation\Library\EdkIIGlueLib\Library\BaseMemoryLib\BaseMemoryLib.inf +$(EDK_PREFIX)Foundation\Library\EdkIIGlueLib\Library\BasePrintLib\BasePrintLib.inf +$(EDK_PREFIX)Foundation\Library\EdkIIGlueLib\Library\BaseDebugLibNull\BaseDebugLibNull.inf +$(EDK_PREFIX)Foundation\Library\EdkIIGlueLib\Library\BaseIoLibIntrinsic\BaseIoLibIntrinsic.inf +$(EDK_PREFIX)Foundation\Library\EdkIIGlueLib\Library\BasePostCodeLibPort80\BasePostCodeLibPort80.inf +$(EDK_PREFIX)Foundation\Library\EdkIIGlueLib\Library\BasePostCodeLibDebug\BasePostCodeLibDebug.inf +$(EDK_PREFIX)Foundation\Library\EdkIIGlueLib\Library\BaseCacheMaintenanceLib\BaseCacheMaintenanceLib.inf +$(EDK_PREFIX)Foundation\Library\EdkIIGlueLib\Library\BasePciCf8Lib\BasePciCf8Lib.inf +$(EDK_PREFIX)Foundation\Library\EdkIIGlueLib\Library\BasePciExpressLib\BasePciExpressLib.inf +$(EDK_PREFIX)Foundation\Library\EdkIIGlueLib\Library\BasePciLibCf8\BasePciLibCf8.inf +$(EDK_PREFIX)Foundation\Library\EdkIIGlueLib\Library\BasePciLibPciExpress\BasePciLibPciExpress.inf +$(EDK_PREFIX)Foundation\Library\EdkIIGlueLib\Library\BasePeCoffGetEntryPointLib\BasePeCoffGetEntryPointLib.inf +$(EDK_PREFIX)Foundation\Library\EdkIIGlueLib\Library\BasePeCoffLib\BasePeCoffLib.inf +$(EDK_PREFIX)Foundation\Library\EdkIIGlueLib\Library\BaseTimerLibLocalApic\BaseTimerLibLocalApic.inf +$(EDK_PREFIX)Foundation\Library\EdkIIGlueLib\Library\BaseUefiDecompressLib\BaseUefiDecompressLib.inf +$(EDK_PREFIX)Foundation\Library\EdkIIGlueLib\Library\PeiDxeDebugLibReportStatusCode\PeiDxeDebugLibReportStatusCode.inf +$(EDK_PREFIX)Foundation\Library\EdkIIGlueLib\Library\PeiDxePostCodeLibReportStatusCode\PeiDxePostCodeLibReportStatusCode.inf +$(EDK_PREFIX)Foundation\Library\EdkIIGlueLib\Library\PeiServicesTablePointerLibMm7\PeiServicesTablePointerLibMm7.inf +$(EDK_PREFIX)Foundation\Library\EdkIIGlueLib\Library\PeiServicesTablePointerLib\PeiServicesTablePointerLib.inf +$(EDK_PREFIX)Foundation\Library\EdkIIGlueLib\Library\PeiMemoryAllocationLib\PeiMemoryAllocationLib.inf +$(EDK_PREFIX)Foundation\Library\EdkIIGlueLib\Library\PeiServicesLib\PeiServicesLib.inf +$(EDK_PREFIX)Foundation\Library\EdkIIGlueLib\Library\PeiHobLib\PeiHobLib.inf +$(EDK_PREFIX)Foundation\Library\EdkIIGlueLib\Library\PeiReportStatusCodeLib\PeiReportStatusCodeLib.inf +$(EDK_PREFIX)Foundation\Library\EdkIIGlueLib\Library\PeiResourcePublicationLib\PeiResourcePublicationLib.inf +$(EDK_PREFIX)Foundation\Library\EdkIIGlueLib\Library\PeiSmbusLib\PeiSmbusLib.inf diff --git a/EdkCompatibilityPkg/Sample/Platform/EdkIIGlueLibAll.dsc b/EdkCompatibilityPkg/Sample/Platform/EdkIIGlueLibAll.dsc new file mode 100644 index 0000000000..8879bf3737 --- /dev/null +++ b/EdkCompatibilityPkg/Sample/Platform/EdkIIGlueLibAll.dsc @@ -0,0 +1,54 @@ +#/*++ +# Copyright (c) 2006, Intel Corporation +# All rights reserved. This program and the accompanying materials +# are licensed and made available under the terms and conditions of the BSD License +# which accompanies this distribution. The full text of the license may be found at +# http://opensource.org/licenses/bsd-license.php +# +# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +#--*/ +# +# EdkII Glue Library +# +$(EDK_PREFIX)Foundation\Library\EdkIIGlueLib\Library\BaseLib\BaseLib.inf +$(EDK_PREFIX)Foundation\Library\EdkIIGlueLib\Library\BaseMemoryLib\BaseMemoryLib.inf +$(EDK_PREFIX)Foundation\Library\EdkIIGlueLib\Library\BasePrintLib\BasePrintLib.inf +$(EDK_PREFIX)Foundation\Library\EdkIIGlueLib\Library\BaseDebugLibNull\BaseDebugLibNull.inf +$(EDK_PREFIX)Foundation\Library\EdkIIGlueLib\Library\BaseIoLibIntrinsic\BaseIoLibIntrinsic.inf +$(EDK_PREFIX)Foundation\Library\EdkIIGlueLib\Library\UefiBootServicesTableLib\UefiBootServicesTableLib.inf +$(EDK_PREFIX)Foundation\Library\EdkIIGlueLib\Library\DxeIoLibCpuIo\DxeIoLibCpuIo.inf +$(EDK_PREFIX)Foundation\Library\EdkIIGlueLib\Library\BasePostCodeLibPort80\BasePostCodeLibPort80.inf +$(EDK_PREFIX)Foundation\Library\EdkIIGlueLib\Library\BasePostCodeLibDebug\BasePostCodeLibDebug.inf +$(EDK_PREFIX)Foundation\Library\EdkIIGlueLib\Library\BaseCacheMaintenanceLib\BaseCacheMaintenanceLib.inf +$(EDK_PREFIX)Foundation\Library\EdkIIGlueLib\Library\BasePciCf8Lib\BasePciCf8Lib.inf +$(EDK_PREFIX)Foundation\Library\EdkIIGlueLib\Library\BasePciExpressLib\BasePciExpressLib.inf +$(EDK_PREFIX)Foundation\Library\EdkIIGlueLib\Library\BasePciLibCf8\BasePciLibCf8.inf +$(EDK_PREFIX)Foundation\Library\EdkIIGlueLib\Library\BasePciLibPciExpress\BasePciLibPciExpress.inf +$(EDK_PREFIX)Foundation\Library\EdkIIGlueLib\Library\BasePeCoffGetEntryPointLib\BasePeCoffGetEntryPointLib.inf +$(EDK_PREFIX)Foundation\Library\EdkIIGlueLib\Library\BasePeCoffLib\BasePeCoffLib.inf +$(EDK_PREFIX)Foundation\Library\EdkIIGlueLib\Library\BaseTimerLibLocalApic\BaseTimerLibLocalApic.inf +$(EDK_PREFIX)Foundation\Library\EdkIIGlueLib\Library\BaseUefiDecompressLib\BaseUefiDecompressLib.inf +$(EDK_PREFIX)Foundation\Library\EdkIIGlueLib\Library\PeiDxeDebugLibReportStatusCode\PeiDxeDebugLibReportStatusCode.inf +$(EDK_PREFIX)Foundation\Library\EdkIIGlueLib\Library\PeiDxePostCodeLibReportStatusCode\PeiDxePostCodeLibReportStatusCode.inf +$(EDK_PREFIX)Foundation\Library\EdkIIGlueLib\Library\DxeMemoryAllocationLib\DxeMemoryAllocationLib.inf +$(EDK_PREFIX)Foundation\Library\EdkIIGlueLib\Library\UefiLib\UefiLib.inf +$(EDK_PREFIX)Foundation\Library\EdkIIGlueLib\Library\DxeHobLib\DxeHobLib.inf +$(EDK_PREFIX)Foundation\Library\EdkIIGlueLib\Library\UefiRuntimeServicesTableLib\UefiRuntimeServicesTableLib.inf +$(EDK_PREFIX)Foundation\Library\EdkIIGlueLib\Library\DxeReportStatusCodeLib\DxeReportStatusCodeLib.inf +$(EDK_PREFIX)Foundation\Library\EdkIIGlueLib\Library\HiiLib\HiiLib.inf +$(EDK_PREFIX)Foundation\Library\EdkIIGlueLib\Library\PeiServicesTablePointerLibMm7\PeiServicesTablePointerLibMm7.inf +$(EDK_PREFIX)Foundation\Library\EdkIIGlueLib\Library\PeiServicesTablePointerLibKr1\PeiServicesTablePointerLibKr1.inf +$(EDK_PREFIX)Foundation\Library\EdkIIGlueLib\Library\PeiServicesTablePointerLib\PeiServicesTablePointerLib.inf +$(EDK_PREFIX)Foundation\Library\EdkIIGlueLib\Library\PeiMemoryAllocationLib\PeiMemoryAllocationLib.inf +$(EDK_PREFIX)Foundation\Library\EdkIIGlueLib\Library\PeiServicesLib\PeiServicesLib.inf +$(EDK_PREFIX)Foundation\Library\EdkIIGlueLib\Library\PeiHobLib\PeiHobLib.inf +$(EDK_PREFIX)Foundation\Library\EdkIIGlueLib\Library\PeiReportStatusCodeLib\PeiReportStatusCodeLib.inf +$(EDK_PREFIX)Foundation\Library\EdkIIGlueLib\Library\PeiResourcePublicationLib\PeiResourcePublicationLib.inf +$(EDK_PREFIX)Foundation\Library\EdkIIGlueLib\Library\UefiDevicePathLib\UefiDevicePathLib.inf +$(EDK_PREFIX)Foundation\Library\EdkIIGlueLib\Library\UefiDriverModelLib\UefiDriverModelLib.inf +$(EDK_PREFIX)Foundation\Library\EdkIIGlueLib\Library\DxeServicesTableLib\DxeServicesTableLib.inf +$(EDK_PREFIX)Foundation\Library\EdkIIGlueLib\Library\EdkDxeSalLib\EdkDxeSalLib.inf +$(EDK_PREFIX)Foundation\Library\EdkIIGlueLib\Library\EdkDxeRuntimeDriverLib\EdkDxeRuntimeDriverLib.inf +$(EDK_PREFIX)Foundation\Library\EdkIIGlueLib\Library\DxeSmbusLib\DxeSmbusLib.inf +$(EDK_PREFIX)Foundation\Library\EdkIIGlueLib\Library\PeiSmbusLib\PeiSmbusLib.inf \ No newline at end of file diff --git a/EdkCompatibilityPkg/Sample/Platform/EdkLib32.dsc b/EdkCompatibilityPkg/Sample/Platform/EdkLib32.dsc new file mode 100644 index 0000000000..7be8ebbe80 --- /dev/null +++ b/EdkCompatibilityPkg/Sample/Platform/EdkLib32.dsc @@ -0,0 +1,36 @@ +#/*++ +# +# Copyright (c) 2004 - 2006, Intel Corporation +# All rights reserved. This program and the accompanying materials +# are licensed and made available under the terms and conditions of the BSD License +# which accompanies this distribution. The full text of the license may be found at +# http://opensource.org/licenses/bsd-license.php +# +# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +# +#--*/ +# +# EDK Common Library for PEI usage (32bit) +# + +# +# Libraries common to PEI and DXE +# +$(EDK_PREFIX)Foundation\Efi\Guid\EfiGuidLib.inf +$(EDK_PREFIX)Foundation\Framework\Guid\EdkFrameworkGuidLib.inf +$(EDK_PREFIX)Foundation\Guid\EdkGuidLib.inf +$(EDK_PREFIX)Foundation\Library\EfiCommonLib\EfiCommonLib.inf +$(EDK_PREFIX)Foundation\Cpu\Pentium\CpuIA32Lib\CpuIA32Lib.inf +$(EDK_PREFIX)Foundation\Cpu\Itanium\CpuIA64Lib\CpuIA64Lib.inf +$(EDK_PREFIX)Foundation\Library\CustomizedDecompress\CustomizedDecompress.inf +$(EDK_PREFIX)Foundation\Library\CompilerStub\CompilerStubLib.inf +$(EDK_PREFIX)Foundation\Library\Dxe\Hob\HobLib.inf + +# +# PEI libraries +# +$(EDK_PREFIX)Foundation\Framework\Ppi\EdkFrameworkPpiLib.inf +$(EDK_PREFIX)Foundation\Ppi\EdkPpiLib.inf +$(EDK_PREFIX)Foundation\Library\Pei\PeiLib\PeiLib.inf +$(EDK_PREFIX)Foundation\Library\Pei\Hob\PeiHobLib.inf diff --git a/EdkCompatibilityPkg/Sample/Platform/EdkLibAll.dsc b/EdkCompatibilityPkg/Sample/Platform/EdkLibAll.dsc new file mode 100644 index 0000000000..346946f5ec --- /dev/null +++ b/EdkCompatibilityPkg/Sample/Platform/EdkLibAll.dsc @@ -0,0 +1,63 @@ +#/*++ +# +# Copyright (c) 2004 - 2007, Intel Corporation +# All rights reserved. This program and the accompanying materials +# are licensed and made available under the terms and conditions of the BSD License +# which accompanies this distribution. The full text of the license may be found at +# http://opensource.org/licenses/bsd-license.php +# +# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +# +#--*/ +# +# EDK Common Library +# + +# +# Libraries common to PEI and DXE +# +$(EDK_PREFIX)Foundation\Efi\Guid\EfiGuidLib.inf +$(EDK_PREFIX)Foundation\Framework\Guid\EdkFrameworkGuidLib.inf +$(EDK_PREFIX)Foundation\Guid\EdkGuidLib.inf +$(EDK_PREFIX)Foundation\Library\EfiCommonLib\EfiCommonLib.inf +$(EDK_PREFIX)Foundation\Cpu\Pentium\CpuIA32Lib\CpuIA32Lib.inf +$(EDK_PREFIX)Foundation\Cpu\Itanium\CpuIA64Lib\CpuIA64Lib.inf +$(EDK_PREFIX)Foundation\Library\CustomizedDecompress\CustomizedDecompress.inf +$(EDK_PREFIX)Foundation\Library\CompilerStub\CompilerStubLib.inf +$(EDK_PREFIX)Foundation\Library\Dxe\Hob\HobLib.inf + +# +# PEI libraries +# +$(EDK_PREFIX)Foundation\Framework\Ppi\EdkFrameworkPpiLib.inf +$(EDK_PREFIX)Foundation\Ppi\EdkPpiLib.inf +$(EDK_PREFIX)Foundation\Library\Pei\PeiLib\PeiLib.inf +$(EDK_PREFIX)Foundation\Library\Pei\Hob\PeiHobLib.inf + +# +# DXE libraries +# +$(EDK_PREFIX)Foundation\Core\Dxe\ArchProtocol\ArchProtocolLib.inf +$(EDK_PREFIX)Foundation\Efi\Protocol\EfiProtocolLib.inf +$(EDK_PREFIX)Foundation\Framework\Protocol\EdkFrameworkProtocolLib.inf +$(EDK_PREFIX)Foundation\Protocol\EdkProtocolLib.inf +$(EDK_PREFIX)Foundation\Library\Dxe\EfiDriverLib\EfiDriverLib.inf +$(EDK_PREFIX)Foundation\Library\RuntimeDxe\EfiRuntimeLib\EfiRuntimeLib.inf +$(EDK_PREFIX)Foundation\Library\Dxe\Graphics\Graphics.inf +$(EDK_PREFIX)Foundation\Library\Dxe\EfiIfrSupportLib\EfiIfrSupportLib.inf +$(EDK_PREFIX)Foundation\Library\Dxe\Print\PrintLib.inf +$(EDK_PREFIX)Foundation\Library\Dxe\EfiScriptLib\EfiScriptLib.inf +$(EDK_PREFIX)Foundation\Library\Dxe\EfiUiLib\EfiUiLib.inf + +# +# Print/Graphics Library consume SetupBrowser Print Protocol +# +$(EDK_PREFIX)Foundation\Library\Dxe\PrintLite\PrintLib.inf +$(EDK_PREFIX)Foundation\Library\Dxe\GraphicsLite\Graphics.inf + +# +# Module Libraries +# +$(EDK_PREFIX)Sample\Platform\Generic\Dxe\GenericBds\GenericBds.inf +$(EDK_PREFIX)Sample\Bus\Usb\UsbLib\Dxe\UsbDxeLib.inf diff --git a/EdkCompatibilityPkg/Sample/Platform/Nt32/Protocol/EdkNt32ProtocolLib.inf b/EdkCompatibilityPkg/Sample/Platform/Nt32/Protocol/EdkNt32ProtocolLib.inf new file mode 100644 index 0000000000..1abff26c06 --- /dev/null +++ b/EdkCompatibilityPkg/Sample/Platform/Nt32/Protocol/EdkNt32ProtocolLib.inf @@ -0,0 +1,46 @@ +#/*++ +# +# Copyright (c) 2004, Intel Corporation +# All rights reserved. This program and the accompanying materials +# are licensed and made available under the terms and conditions of the BSD License +# which accompanies this distribution. The full text of the license may be found at +# http://opensource.org/licenses/bsd-license.php +# +# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +# +# Module Name: +# +# EdkNt32ProtocolLib.inf +# +# Abstract: +# +# Component description file. +# +#--*/ + +[defines] +BASE_NAME= EdkNt32ProtocolLib +COMPONENT_TYPE= LIBRARY + +[includes.common] + $(EDK_SOURCE)\Sample\Platform\Nt32 + $(EDK_SOURCE)\Foundation\Efi + $(EDK_SOURCE)\Foundation\Include + $(EDK_SOURCE)\Foundation\Efi\Include + $(EDK_SOURCE)\Foundation\Framework\Include + $(EDK_SOURCE)\Foundation\Include\IndustryStandard + $(EDK_SOURCE)\Foundation\Include\Pei + $(EDK_SOURCE)\Foundation\Library\Pei\Include + $(EDK_SOURCE)\Foundation\Core\Dxe + $(EDK_SOURCE)\Foundation\Library\Dxe\Include + $(EDK_SOURCE)\Sample\Include + +[nmake.common] +C_STD_INCLUDE= + +[sources.common] + WinNtIo\WinNtIo.h + WinNtIo\WinNtIo.c + WinNtThunk\WinNtThunk.h + WinNtThunk\WinNtThunk.c diff --git a/EdkCompatibilityPkg/Sample/Platform/Nt32/Protocol/WinNtIo/WinNtIo.c b/EdkCompatibilityPkg/Sample/Platform/Nt32/Protocol/WinNtIo/WinNtIo.c new file mode 100644 index 0000000000..318ff33684 --- /dev/null +++ b/EdkCompatibilityPkg/Sample/Platform/Nt32/Protocol/WinNtIo/WinNtIo.c @@ -0,0 +1,40 @@ +/*++ + +Copyright (c) 2004 - 2006, Intel Corporation +All rights reserved. This program and the accompanying materials +are licensed and made available under the terms and conditions of the BSD License +which accompanies this distribution. The full text of the license may be found at +http://opensource.org/licenses/bsd-license.php + +THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. + +Module Name: + + WinNtIo.c + +Abstract: + + This protocol allows an EFI driver (DLL) in the NT emulation envirnment + to make Win32 API calls. + +--*/ + +#include "EfiWinNt.h" +#include EFI_PROTOCOL_DEFINITION (WinNtIo) + +EFI_GUID gEfiWinNtIoProtocolGuid = EFI_WIN_NT_IO_PROTOCOL_GUID; + +EFI_GUID_STRING(&gEfiWinNtIoProtocolGuid, "EFI Win NT I/O Protocol", "Win32 API I/O protocol"); + +EFI_GUID gEfiWinNtVirtualDisksGuid = EFI_WIN_NT_VIRTUAL_DISKS_GUID; +EFI_GUID gEfiWinNtPhysicalDisksGuid = EFI_WIN_NT_PHYSICAL_DISKS_GUID; +EFI_GUID gEfiWinNtFileSystemGuid = EFI_WIN_NT_FILE_SYSTEM_GUID; +EFI_GUID gEfiWinNtSerialPortGuid = EFI_WIN_NT_SERIAL_PORT_GUID; +EFI_GUID gEfiWinNtUgaGuid = EFI_WIN_NT_UGA_GUID; +EFI_GUID gEfiWinNtGopGuid = EFI_WIN_NT_GOP_GUID; +EFI_GUID gEfiWinNtConsoleGuid = EFI_WIN_NT_CONSOLE_GUID; +EFI_GUID gEfiWinNtMemoryGuid = EFI_WIN_NT_MEMORY_GUID; +EFI_GUID gEfiWinNtCPUModelGuid = EFI_WIN_NT_CPU_MODEL_GUID; +EFI_GUID gEfiWinNtCPUSpeedGuid = EFI_WIN_NT_CPU_SPEED_GUID; +EFI_GUID gEfiWinNtPassThroughGuid = EFI_WIN_NT_PASS_THROUGH_GUID; diff --git a/EdkCompatibilityPkg/Sample/Platform/Nt32/Protocol/WinNtIo/WinNtIo.h b/EdkCompatibilityPkg/Sample/Platform/Nt32/Protocol/WinNtIo/WinNtIo.h new file mode 100644 index 0000000000..7da6099499 --- /dev/null +++ b/EdkCompatibilityPkg/Sample/Platform/Nt32/Protocol/WinNtIo/WinNtIo.h @@ -0,0 +1,163 @@ +/*++ + +Copyright (c) 2004 - 2006, Intel Corporation +All rights reserved. This program and the accompanying materials +are licensed and made available under the terms and conditions of the BSD License +which accompanies this distribution. The full text of the license may be found at +http://opensource.org/licenses/bsd-license.php + +THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. + +Module Name: + + WinNtIo.h + +Abstract: + +--*/ + +#ifndef _WIN_NT_IO_H_ +#define _WIN_NT_IO_H_ + +#define EFI_WIN_NT_IO_PROTOCOL_GUID \ + { \ + 0x96eb4ad6, 0xa32a, 0x11d4, 0xbc, 0xfd, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81 \ + } + +// +// The following APIs require EfiWinNT.h. In some environmnets the GUID +// definitions are needed but the EfiWinNT.h is not included. +// EfiWinNT.h is needed to support WINDOWS API requirements. +// +#ifdef _EFI_WIN_NT_H_ + +#include EFI_PROTOCOL_DEFINITION (WinNtThunk) + +typedef struct { + EFI_WIN_NT_THUNK_PROTOCOL *WinNtThunk; + EFI_GUID *TypeGuid; + CHAR16 *EnvString; + UINT16 InstanceNumber; +} EFI_WIN_NT_IO_PROTOCOL; + +#endif + +extern EFI_GUID gEfiWinNtIoProtocolGuid; + +// +// The following GUIDs are used in EFI_WIN_NT_IO_PROTOCOL_GUID +// Device paths. They map 1:1 with NT envirnment variables. The variables +// define what virtual hardware the emulator/WinNtBusDriver will produce. +// +// +// EFI_WIN_NT_VIRTUAL_DISKS +// +#define EFI_WIN_NT_VIRTUAL_DISKS_GUID \ + { \ + 0xc95a928, 0xa006, 0x11d4, 0xbc, 0xfa, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81 \ + } + +extern EFI_GUID gEfiWinNtVirtualDisksGuid; + +// +// EFI_WIN_NT_PHYSICAL_DISKS +// +#define EFI_WIN_NT_PHYSICAL_DISKS_GUID \ + { \ + 0xc95a92f, 0xa006, 0x11d4, 0xbc, 0xfa, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81 \ + } + +extern EFI_GUID gEfiWinNtPhysicalDisksGuid; + +// +// EFI_WIN_NT_FILE_SYSTEM +// +#define EFI_WIN_NT_FILE_SYSTEM_GUID \ + { \ + 0xc95a935, 0xa006, 0x11d4, 0xbc, 0xfa, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81 \ + } + +extern EFI_GUID gEfiWinNtFileSystemGuid; + +// +// EFI_WIN_NT_SERIAL_PORT +// +#define EFI_WIN_NT_SERIAL_PORT_GUID \ + { \ + 0xc95a93d, 0xa006, 0x11d4, 0xbc, 0xfa, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81 \ + } + +extern EFI_GUID gEfiWinNtSerialPortGuid; + +// +// EFI_WIN_NT_UGA +// +#define EFI_WIN_NT_UGA_GUID \ + { \ + 0xab248e99, 0xabe1, 0x11d4, 0xbd, 0xd, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81 \ + } + +extern EFI_GUID gEfiWinNtUgaGuid; + +// +// EFI_WIN_NT_GOP +// +#define EFI_WIN_NT_GOP_GUID \ + { \ + 0x4e11e955, 0xccca, 0x11d4, 0xbd, 0xd, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81 \ + } + +extern EFI_GUID gEfiWinNtGopGuid; + +// +// EFI_WIN_NT_CONSOLE +// +#define EFI_WIN_NT_CONSOLE_GUID \ + { \ + 0xba73672c, 0xa5d3, 0x11d4, 0xbd, 0x0, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81 \ + } + +extern EFI_GUID gEfiWinNtConsoleGuid; + +// +// EFI_WIN_NT_MEMORY +// +#define EFI_WIN_NT_MEMORY_GUID \ + { \ + 0x99042912, 0x122a, 0x11d4, 0xbd, 0xd, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81 \ + } + +extern EFI_GUID gEfiWinNtMemoryGuid; + +// +// EFI_WIN_NT_CPU_MODEL +// +#define EFI_WIN_NT_CPU_MODEL_GUID \ + { \ + 0xbee9b6ce, 0x2f8a, 0x11d4, 0xbd, 0xd, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81 \ + } + +extern EFI_GUID gEfiWinNtCPUModelGuid; + +// +// EFI_WIN_NT_CPU_SPEED +// +#define EFI_WIN_NT_CPU_SPEED_GUID \ + { \ + 0xd4f29055, 0xe1fb, 0x11d4, 0xbd, 0xd, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81 \ + } + +extern EFI_GUID gEfiWinNtCPUSpeedGuid; + +// +// EFI_WIN_NT_PASS_THROUGH +// +#define EFI_WIN_NT_PASS_THROUGH_GUID \ + { \ + 0xcc664eb8, 0x3c24, 0x4086, 0xb6, 0xf6, 0x34, 0xe8, 0x56, 0xbc, 0xe3, 0x6e \ + } + +extern EFI_GUID gEfiWinNtPassThroughGuid; + +#endif diff --git a/EdkCompatibilityPkg/Sample/Platform/Nt32/Protocol/WinNtThunk/WinNtThunk.c b/EdkCompatibilityPkg/Sample/Platform/Nt32/Protocol/WinNtThunk/WinNtThunk.c new file mode 100644 index 0000000000..f0e827bb0e --- /dev/null +++ b/EdkCompatibilityPkg/Sample/Platform/Nt32/Protocol/WinNtThunk/WinNtThunk.c @@ -0,0 +1,28 @@ +/*++ + +Copyright (c) 2004, Intel Corporation +All rights reserved. This program and the accompanying materials +are licensed and made available under the terms and conditions of the BSD License +which accompanies this distribution. The full text of the license may be found at +http://opensource.org/licenses/bsd-license.php + +THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. + +Module Name: + + WinNtThunk.c + +Abstract: + + This protocol allows an EFI driver (DLL) in the NT emulation envirnment + to make Win32 API calls. + +--*/ + +#include "Tiano.h" +#include EFI_PROTOCOL_DEFINITION (WinNtThunk) + +EFI_GUID gEfiWinNtThunkProtocolGuid = EFI_WIN_NT_THUNK_PROTOCOL_GUID; + +EFI_GUID_STRING(&gEfiWinNtThunkProtocolGuid, "EFI Win NT Thunk", "Win32 API thunk protocol"); diff --git a/EdkCompatibilityPkg/Sample/Platform/Nt32/Protocol/WinNtThunk/WinNtThunk.h b/EdkCompatibilityPkg/Sample/Platform/Nt32/Protocol/WinNtThunk/WinNtThunk.h new file mode 100644 index 0000000000..5ad6245682 --- /dev/null +++ b/EdkCompatibilityPkg/Sample/Platform/Nt32/Protocol/WinNtThunk/WinNtThunk.h @@ -0,0 +1,1276 @@ +/*++ + +Copyright (c) 2004, Intel Corporation +All rights reserved. This program and the accompanying materials +are licensed and made available under the terms and conditions of the BSD License +which accompanies this distribution. The full text of the license may be found at +http://opensource.org/licenses/bsd-license.php + +THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. + +Module Name: + + WinNtThunk.h + +Abstract: + + This protocol allows an EFI driver (DLL) in the NT emulation envirnment + to make Win32 API calls. + + NEVER make a Win32 call directly, always make the call via this protocol. + + There are no This pointers on the protocol member functions as they map + exactly into Win32 system calls. + + YOU MUST include EfiWinNT.h in place of Efi.h to make this file compile. + +--*/ + +#ifndef _WIN_NT_THUNK_H_ +#define _WIN_NT_THUNK_H_ + +#define EFI_WIN_NT_THUNK_PROTOCOL_GUID \ + { \ + 0x58c518b1, 0x76f3, 0x11d4, 0xbc, 0xea, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81 \ + } + +// +// The following APIs require EfiWinNT.h. In some environmnets the GUID +// definitions are needed but the EfiWinNT.h is not included. +// EfiWinNT.h is needed to support WINDOWS API requirements. +// +#ifdef _EFI_WIN_NT_H_ + +typedef +WINBASEAPI +VOID +(WINAPI *WinNtSleep) ( + DWORD Milliseconds + ); + +typedef +WINBASEAPI +DWORD +(WINAPI *WinNtSuspendThread) ( + HANDLE hThread + ); + +typedef +WINBASEAPI +HANDLE +(WINAPI *WinNtGetCurrentThread) ( + VOID + ); + +typedef +WINBASEAPI +DWORD +(WINAPI *WinNtGetCurrentThreadId) ( + VOID + ); + +typedef +WINBASEAPI +HANDLE +(WINAPI *WinNtGetCurrentProcess) ( + VOID + ); + +typedef +WINBASEAPI +HANDLE +(WINAPI *WinNtCreateThread) ( + LPSECURITY_ATTRIBUTES lpThreadAttributes, + DWORD dwStackSize, + LPTHREAD_START_ROUTINE lpStartAddress, + LPVOID lpParameter, + DWORD dwCreationFlags, + LPDWORD lpThreadId + ); + +typedef +WINBASEAPI +BOOL +(WINAPI *WinNtTerminateThread) ( + HANDLE hThread, + DWORD dwExitCode + ); + +typedef +WINBASEAPI +BOOL +(WINAPI *WinNtSendMessage) ( + HWND hWnd, + UINT Msg, + WPARAM wParam, + LPARAM lParam + ); + +typedef +WINBASEAPI +VOID +(WINAPI *WinNtExitThread) ( + DWORD dwExitCode + ); + +typedef +WINBASEAPI +DWORD +(WINAPI *WinNtResumeThread) ( + HANDLE hThread + ); + +typedef +WINBASEAPI +BOOL +(WINAPI *WinNtSetThreadPriority) ( + HANDLE hThread, + INTN nPriority + ); + +typedef +WINBASEAPI +VOID +(WINAPI *WinNtInitializeCriticalSection) ( + LPCRITICAL_SECTION lpCriticalSection + ); + +typedef +WINBASEAPI +VOID +(WINAPI *WinNtDeleteCriticalSection) ( + LPCRITICAL_SECTION lpCriticalSection + ); + +typedef +WINBASEAPI +VOID +(WINAPI *WinNtEnterCriticalSection) ( + LPCRITICAL_SECTION lpCriticalSection + ); + +typedef +WINBASEAPI +VOID +(WINAPI *WinNtLeaveCriticalSection) ( + LPCRITICAL_SECTION lpCriticalSection + ); + +typedef +WINBASEAPI +BOOL +(WINAPI *WinNtTlsAlloc) ( + VOID + ); + +typedef +WINBASEAPI +LPVOID +(WINAPI *WinNtTlsGetValue) ( + DWORD dwTlsIndex + ); + +typedef +WINBASEAPI +BOOL +(WINAPI *WinNtTlsSetValue) ( + DWORD dwTlsIndex, + LPVOID lpTlsValue + ); + +typedef +WINBASEAPI +BOOL +(WINAPI *WinNtTlsFree) ( + DWORD dwTlsIndex + ); + +typedef +WINBASEAPI +HANDLE +(WINAPI *WinNtCreateSemaphore) ( + LPSECURITY_ATTRIBUTES lpSemaphoreAttributes, + LONG lInitialCount, + LONG lMaximumCount, + LPCWSTR lpName + ); + +typedef +WINBASEAPI +DWORD +(WINAPI *WinNtWaitForSingleObject) ( + HANDLE hHandle, + DWORD dwMilliseconds + ); + +typedef +WINBASEAPI +BOOL +(WINAPI *WinNtReleaseSemaphore) ( + HANDLE hSemaphore, + LONG lReleaseCount, + LPLONG lpPreviousCount + ); + +typedef +WINBASEAPI +BOOL +(WINAPI *WinNtDuplicateHandle) ( + HANDLE hSourceProcessHandle, + HANDLE hSourceHandle, + HANDLE hTargetProcessHandle, + LPHANDLE lpTargetHandle, + DWORD dwDesiredAccess, + BOOL bInheritHandle, + DWORD dwOptions + ); + +typedef +WINBASEAPI +HANDLE +(WINAPI *WinNtCreateConsoleScreenBuffer) ( + DWORD DesiredAccess, + DWORD ShareMode, + CONST SECURITY_ATTRIBUTES *SecurityAttributes, + DWORD Flags, + LPVOID ScreenBufferData + ); + +typedef +WINBASEAPI +BOOL +(WINAPI *WinNtSetConsoleScreenBufferSize) ( + HANDLE ConsoleOutput, + COORD Size + ); + +typedef +WINBASEAPI +BOOL +(WINAPI *WinNtSetConsoleActiveScreenBuffer) ( + HANDLE ConsoleOutput + ); + +typedef +WINBASEAPI +BOOL +(WINAPI *WinNtFillConsoleOutputAttribute) ( + HANDLE ConsoleOutput, + WORD Attribute, + DWORD Length, + COORD WriteCoord, + LPDWORD NumberOfAttrsWritten + ); + +typedef +WINBASEAPI +BOOL +(WINAPI *WinNtFillConsoleOutputCharacter) ( + HANDLE ConsoleOutput, + TCHAR Character, + DWORD Length, + COORD WriteCoord, + LPDWORD NumberOfCharsWritten + ); + +typedef +WINBASEAPI +BOOL +(WINAPI *WinNtWriteConsoleOutput) ( + HANDLE ConsoleOutput, + CONST CHAR_INFO *Buffer, + COORD BufferSize, + COORD BufferCoord, + PSMALL_RECT WriteRegion + ); + +typedef +WINBASEAPI +BOOL +(WINAPI *WinNtScrollConsoleScreenBuffer) ( + HANDLE ConsoleOutput, + CONST SMALL_RECT *ScrollRectangle, + CONST SMALL_RECT *ClipRectangle, + COORD DestinationOrigin, + CONST CHAR_INFO *Fill + ); + +typedef +WINBASEAPI +BOOL +(WINAPI *WinNtSetConsoleTitleW) ( + LPCTSTR ConsoleTitle + ); + +typedef +WINBASEAPI +BOOL +(WINAPI *WinNtGetConsoleCursorInfo) ( + HANDLE ConsoleOutput, + PCONSOLE_CURSOR_INFO ConsoleCursorInfo + ); + +typedef +WINBASEAPI +BOOL +(WINAPI *WinNtSetConsoleCursorInfo) ( + HANDLE ConsoleOutput, + CONST CONSOLE_CURSOR_INFO *ConsoleCursorInfo + ); + +typedef +WINBASEAPI +BOOL +(WINAPI *WinNtSetPriorityClass) ( + HANDLE Process, + DWORD PriorityClass + ); + +typedef +WINBASEAPI +BOOL +(WINAPI *WinNtWriteConsoleInput) ( + HANDLE ConsoleInput, + CONST INPUT_RECORD *Buffer, + DWORD Legnth, + LPDWORD NumberOfEventsWritten + ); + +typedef +WINBASEAPI +BOOL +(WINAPI *WinNtGetNumberOfConsoleInputEvents) ( + HANDLE ConsoleInput, + LPDWORD NumberOfEvents + ); + +typedef +WINBASEAPI +HANDLE +(WINAPI *WinNtGetStdHandle) ( + DWORD StdHandle + ); + +typedef +WINBASEAPI +BOOL +(WINAPI *WinNtReadConsoleInput) ( + HANDLE ConsoleInput, + PINPUT_RECORD Buffer, + DWORD Length, + LPDWORD NumberOfEventsRead + ); + +typedef +WINBASEAPI +BOOL +(WINAPI *WinNtPeekConsoleInput) ( + HANDLE ConsoleInput, + PINPUT_RECORD Buffer, + DWORD Length, + LPDWORD NumberOfEventsRead + ); + +typedef +WINBASEAPI +BOOL +(WINAPI *WinNtSetConsoleCursorPosition) ( + HANDLE ConsoleInput, + COORD CursorPosition + ); + +typedef +WINBASEAPI +HANDLE +(WINAPI *WinNtCreateFile) ( + LPCWSTR FileName, + DWORD DesiredAccess, + DWORD SharedMode, + LPSECURITY_ATTRIBUTES SecurityAttributes, + DWORD CreationDisposition, + DWORD FlagsAndAttributes, + HANDLE TemplateFile + ); + +typedef +WINBASEAPI +BOOL +(WINAPI *WinNtDeviceIoControl) ( + HANDLE DeviceHandle, + DWORD IoControlCode, + LPVOID InBuffer, + DWORD InBufferSize, + LPVOID OutBuffer, + DWORD OutBufferSize, + LPDWORD BytesReturned, + LPOVERLAPPED Overlapped + ); + +typedef +WINBASEAPI +BOOL +(WINAPI *WinNtCreateDirectory) ( + LPCWSTR PathName, + LPSECURITY_ATTRIBUTES SecurityAttributes + ); + +typedef +WINBASEAPI +BOOL +(WINAPI *WinNtRemoveDirectory) ( + LPCWSTR PathName + ); + +typedef +WINBASEAPI +DWORD +(WINAPI *WinNtGetFileAttributes) ( + LPCWSTR FileName + ); + +typedef +WINBASEAPI +BOOL +(WINAPI *WinNtSetFileAttributes) ( + LPCWSTR FileName, + DWORD FileAttributes + ); + +typedef +WINBASEAPI +HANDLE +(WINAPI *WinNtCreateFileMapping) ( + HANDLE FileHandle, + LPSECURITY_ATTRIBUTES Attributes, + DWORD Protect, + DWORD MaximumSizeHigh, + DWORD MaximumSizeLow, + LPCTSTR Name + ); + +typedef +WINBASEAPI +LPVOID +(WINAPI *WinNtMapViewOfFileEx) ( + HANDLE FileHandle, + DWORD DesiredAccess, + DWORD FileOffsetHigh, + DWORD FileOffsetLow, + DWORD NumberOfBytesToMap, + LPVOID BaseAddress + ); + +typedef +WINBASEAPI +DWORD +(WINAPI *WinNtGetEnvironmentVariable) ( + LPCTSTR Name, + LPTSTR Buffer, + DWORD Size + ); + +typedef +WINBASEAPI +BOOL +(WINAPI *WinNtCloseHandle) ( + HANDLE Object + ); + +typedef +WINBASEAPI +DWORD +(WINAPI *WinNtSetFilePointer) ( + HANDLE FileHandle, + LONG DistanceToMove, + PLONG DistanceToHoveHigh, + DWORD MoveMethod + ); + +typedef +WINBASEAPI +BOOL +(WINAPI *WinNtSetEndOfFile) ( + HANDLE FileHandle + ); + +typedef +WINBASEAPI +BOOL +(WINAPI *WinNtReadFile) ( + HANDLE FileHandle, + LPVOID Buffer, + DWORD NumberOfBytesToRead, + LPDWORD NumberOfBytesRead, + LPOVERLAPPED Overlapped + ); + +typedef +WINBASEAPI +BOOL +(WINAPI *WinNtWriteFile) ( + HANDLE FileHandle, + LPCVOID Buffer, + DWORD NumberOfBytesToWrite, + LPDWORD NumberOfBytesWritten, + LPOVERLAPPED Overlapped + ); + +typedef +WINBASEAPI +BOOL +(WINAPI *WinNtGetFileInformationByHandle) ( + HANDLE FileHandle, + BY_HANDLE_FILE_INFORMATION *FileInfo + ); + +typedef +WINBASEAPI +BOOL +(WINAPI *WinNtGetDiskFreeSpace) ( + LPCTSTR RootPathName, + LPDWORD SectorsPerCluster, + LPDWORD BytesPerSector, + LPDWORD NumberOfFreeClusters, + LPDWORD TotalNumberOfClusters + ); + +typedef +WINBASEAPI +BOOL +(WINAPI *WinNtGetDiskFreeSpaceEx) ( + LPCTSTR DirectoryName, + PULARGE_INTEGER FreeBytesAvailable, + PULARGE_INTEGER TotalNumberOfBytes, + PULARGE_INTEGER TotoalNumberOfFreeBytes + ); + +typedef +WINBASEAPI +BOOL +(WINAPI *WinNtMoveFile) ( + LPCTSTR ExistingFileName, + LPCTSTR NewFileName + ); + +typedef +WINBASEAPI +BOOL +(WINAPI *WinNtSetFileTime) ( + HANDLE FileHandle, + FILETIME *CreationTime, + FILETIME *LastAccessTime, + FILETIME *LastWriteTime + ); + +typedef +WINBASEAPI +BOOL +(WINAPI *WinNtSystemTimeToFileTime) ( + SYSTEMTIME * SystemTime, + FILETIME * FileTime + ); + +typedef +WINBASEAPI +BOOL +(WINAPI *WinNtDeleteFile) ( + LPCTSTR FileName + ); + +typedef +WINBASEAPI +BOOL +(WINAPI *WinNtFlushFileBuffers) ( + HANDLE + ); + +typedef +WINBASEAPI +DWORD +(WINAPI *WinNtGetLastError) ( + VOID + ); + +typedef +WINBASEAPI +UINT +(WINAPI *WinNtSetErrorMode) ( + UINT Mode + ); + +typedef +WINBASEAPI +DWORD +(WINAPI *WinNtGetTickCount) ( + VOID + ); + +typedef +WINBASEAPI +HMODULE +(WINAPI *WinNtLoadLibraryEx) ( + LPCTSTR LibFileName, + HANDLE FileHandle, + DWORD Flags + ); + +typedef +WINBASEAPI +FARPROC +(WINAPI *WinNtGetProcAddress) ( + HMODULE Module, + LPCSTR ProcName + ); + +typedef +WINBASEAPI +DWORD +(WINAPI *WinNtGetTimeZoneInformation) ( + LPTIME_ZONE_INFORMATION timeZoneInformation + ); + +typedef +WINBASEAPI +MMRESULT +(WINAPI *WinNttimeSetEvent) ( + UINT uDelay, + UINT uResolution, + LPTIMECALLBACK lpTimeProc, + DWORD_PTR dwUser, + UINT fuEvent + ); + +typedef +WINBASEAPI +MMRESULT +(WINAPI *WinNttimeKillEvent) ( + UINT uTimerID + ); + +typedef +WINBASEAPI +DWORD +(WINAPI *WinNtSetTimeZoneInformation) ( + LPTIME_ZONE_INFORMATION timeZoneInformation + ); + +typedef +WINBASEAPI +VOID +(WINAPI *WinNtGetSystemTime) ( + LPSYSTEMTIME SystemTime + ); + +typedef +WINBASEAPI +BOOL +(WINAPI *WinNtSetSystemTime) ( + CONST SYSTEMTIME *SystemTime + ); + +typedef +WINBASEAPI +VOID +(WINAPI *WinNtGetLocalTime) ( + LPSYSTEMTIME SystemTime + ); + +typedef +WINBASEAPI +BOOL +(WINAPI *WinNtSetLocalTime) ( + CONST SYSTEMTIME *SystemTime + ); + +typedef +WINBASEAPI +BOOL +(WINAPI *WinNtFileTimeToLocalFileTime) ( + CONST FILETIME *FileTime, + LPFILETIME LocalFileTime + ); + +typedef +WINBASEAPI +BOOL +(WINAPI *WinNtFileTimeToSystemTime) ( + CONST FILETIME *FileTime, + LPSYSTEMTIME SystemTime + ); + +typedef +WINBASEAPI +HANDLE +(WINAPI *WinNtFindFirstFile) ( + LPCTSTR FileName, + LPWIN32_FIND_DATA FindFileData + ); + +typedef +WINBASEAPI +BOOL +(WINAPI *WinNtFindNextFile) ( + HANDLE FindFile, + LPWIN32_FIND_DATA FindFileData + ); + +typedef +WINBASEAPI +BOOL +(WINAPI *WinNtFindClose) ( + HANDLE FindFile + ); + +typedef +WINBASEAPI +BOOL +(WINAPI *WinNtGetCommState) ( + HANDLE FileHandle, + LPDCB DCB + ); + +typedef +WINBASEAPI +BOOL +(WINAPI *WinNtSetCommState) ( + HANDLE FileHandle, + LPDCB DCB + ); + +typedef +WINBASEAPI +BOOL +(WINAPI *WinNtSetCommState) ( + HANDLE FileHandle, + LPDCB DCB + ); + +typedef +WINBASEAPI +BOOL +(WINAPI *WinNtSetCommTimeouts) ( + HANDLE FileHandle, + LPCOMMTIMEOUTS CommTimeouts + ); + +typedef +WINBASEAPI +VOID +(WINAPI *WinNtExitProcess) ( + UINT uExitCode // exit code for all threads + ); + +typedef +WINBASEAPI +BOOL +(WINAPI *WinNtPurgeComm) ( + HANDLE FileHandle, + DWORD Flags + ); + +typedef +WINBASEAPI +BOOL +(WINAPI *WinNtEscapeCommFunction) ( + HANDLE FileHandle, + DWORD Func + ); + +typedef +WINBASEAPI +BOOL +(WINAPI *WinNtGetCommModemStatus) ( + HANDLE FileHandle, + LPDWORD ModemStat + ); + +typedef +WINBASEAPI +BOOL +(WINAPI *WinNtClearCommError) ( + HANDLE FileHandle, + LPDWORD Errors, + LPCOMSTAT Stat + ); + +typedef +WINUSERAPI +INT32 +(WINAPIV *WinNtSprintf) ( + LPWSTR Buffer, + LPCWSTR String, + ... + ); + +typedef +WINUSERAPI +HWND +(WINAPI *WinNtGetDesktopWindow) ( + VOID + ); + +typedef +WINUSERAPI +HWND +(WINAPI *WinNtGetForegroundWindow) ( + VOID + ); + +typedef +WINUSERAPI +HWND +(WINAPI *WinNtCreateWindowEx) ( + DWORD dwExStyle, + LPCTSTR lpClassName, + LPCTSTR lpWindowName, + DWORD dwStyle, + INT32 x, + INT32 y, + INT32 nWidth, + INT32 nHeight, + HWND hWndParent, + HMENU hMenu, + HINSTANCE hInstance, + LPVOID *lpParam + ); + +typedef +WINUSERAPI +BOOL +(WINAPI *WinNtUpdateWindow) ( + HWND hWnd + ); + +typedef +WINUSERAPI +BOOL +(WINAPI *WinNtShowWindow) ( + HWND hWnd, + INT32 nCmdShow + ); + +typedef +WINGDIAPI +BOOL +(WINAPI *WinNtDestroyWindow) ( + HWND hWnd + ); + +typedef +WINUSERAPI +HDC +(WINAPI *WinNtGetWindowDC) ( + HWND hWnd + ); + +typedef +WINUSERAPI +BOOL +(WINAPI *WinNtGetClientRect) ( + HWND hWnd, + LPRECT lpRect + ); + +typedef +WINUSERAPI +BOOL +(WINAPI *WinNtAdjustWindowRect) ( + LPRECT lpRect, + DWORD dwStyle, + BOOL bMenu + ); + +typedef +WINGDIAPI +INT32 +(WINAPI *WinNtSetDIBitsToDevice) ( + HDC, + INT32, + INT32, + DWORD, + DWORD, + INT32, + INT32, + UINT, + UINT, + CONST VOID *, + CONST BITMAPINFO *, + UINT + ); + +typedef +WINGDIAPI +BOOL +(WINAPI *WinNtBitBlt) ( + HDC, + INT32, + INT32, + INT32, + INT32, + HDC, + INT32, + INT32, + DWORD + ); + +typedef +WINUSERAPI +BOOL +(WINAPI *WinNtInvalidateRect) ( + HWND hWnd, + CONST RECT *lpRect, + BOOL bErase + ); + +typedef +WINUSERAPI +HDC +(WINAPI *WinNtGetDC) ( + HWND hWnd + ); + +typedef +WINUSERAPI +INT32 +(WINAPI *WinNtReleaseDC) ( + HWND hWnd, + HDC hDC + ); + +typedef +WINUSERAPI +ATOM +(WINAPI *WinNtRegisterClassEx) ( + CONST WNDCLASSEX * + ); + +typedef +WINUSERAPI +BOOL +(WINAPI *WinNtUnregisterClass) ( + LPCTSTR lpClassName, + HINSTANCE hInstance + ); + +typedef +WINUSERAPI +HDC +(WINAPI *WinNtBeginPaint) ( + HWND hWnd, + LPPAINTSTRUCT lpPaint + ); + +typedef +WINUSERAPI +BOOL +(WINAPI *WinNtEndPaint) ( + HWND hWnd, + CONST PAINTSTRUCT *lpPaint + ); + +typedef +WINUSERAPI +VOID +(WINAPI *WinNtPostQuitMessage) ( + INT32 nExitCode + ); + +typedef +WINUSERAPI +LRESULT +(WINAPI *WinNtDefWindowProc) ( + HWND hWnd, + UINT Msg, + WPARAM wParam, + LPARAM lParam + ); + +typedef +WINUSERAPI +HICON +(WINAPI *WinNtLoadIcon) ( + HINSTANCE hInstance, + LPCTSTR lpIconName + ); + +typedef +WINUSERAPI +HCURSOR +(WINAPI *WinNtLoadCursor) ( + HINSTANCE hInstance, + LPCTSTR lpCursorName + ); + +typedef +WINGDIAPI +HGDIOBJ +(WINAPI *WinNtGetStockObject) ( + INT32 + ); + +typedef +WINGDIAPI +BOOL +(WINAPI *WinNtSetViewportOrgEx) ( + HDC, + INT32, + INT32, + LPPOINT + ); + +typedef +WINGDIAPI +BOOL +(WINAPI *WinNtSetWindowOrgEx) ( + HDC, + INT32, + INT32, + LPPOINT + ); +typedef +WINGDIAPI +BOOL +(WINAPI *WinNtMoveWindow) ( + HWND, + INT32, + INT32, + INT32, + INT32, + BOOL + ); + +typedef +WINGDIAPI +BOOL +(WINAPI *WinNtGetWindowRect) ( + HWND, + LPRECT + ); + +typedef +WINUSERAPI +BOOL +(WINAPI *WinNtGetMessage) ( + LPMSG lpMsg, + HWND hWnd, + UINT wMsgFilterMin, + UINT wMsgFilterMax + ); + +typedef +WINUSERAPI +BOOL +(WINAPI *WinNtTranslateMessage) ( + CONST MSG *lpMsg + ); + +typedef +WINUSERAPI +BOOL +(WINAPI *WinNtDispatchMessage) ( + CONST MSG *lpMsg + ); + +typedef +WINUSERAPI +HANDLE +(WINAPI *WinNtGetProcessHeap) (); + +typedef +WINUSERAPI +LPVOID +(WINAPI *WinNtHeapAlloc) ( + HANDLE hHeap, + DWORD dwFlags, + SIZE_T dwBytes + ); + +typedef +WINUSERAPI +BOOL +(WINAPI *WinNtHeapFree) ( + HANDLE hHeap, + DWORD dwFlags, + LPVOID lpMem + ); + +typedef +WINBASEAPI +BOOL +(WINAPI *WinNtFreeLibrary) ( + HANDLE ModHandle + ); +// +// +// +EFI_FORWARD_DECLARATION (EFI_WIN_NT_THUNK_PROTOCOL); + +#define EFI_WIN_NT_THUNK_PROTOCOL_SIGNATURE EFI_SIGNATURE_32 ('N', 'T', 'T', 'T') + +typedef struct _EFI_WIN_NT_THUNK_PROTOCOL { + UINT64 Signature; + + // + // Win32 Process APIs + // + WinNtGetProcAddress GetProcAddress; + WinNtGetTickCount GetTickCount; + WinNtLoadLibraryEx LoadLibraryEx; + WinNtFreeLibrary FreeLibrary; + + WinNtSetPriorityClass SetPriorityClass; + WinNtSetThreadPriority SetThreadPriority; + WinNtSleep Sleep; + + WinNtSuspendThread SuspendThread; + WinNtGetCurrentThread GetCurrentThread; + WinNtGetCurrentThreadId GetCurrentThreadId; + WinNtGetCurrentProcess GetCurrentProcess; + WinNtCreateThread CreateThread; + WinNtTerminateThread TerminateThread; + WinNtSendMessage SendMessage; + WinNtExitThread ExitThread; + WinNtResumeThread ResumeThread; + WinNtDuplicateHandle DuplicateHandle; + + // + // Wint32 Mutex primitive + // + WinNtInitializeCriticalSection InitializeCriticalSection; + WinNtEnterCriticalSection EnterCriticalSection; + WinNtLeaveCriticalSection LeaveCriticalSection; + WinNtDeleteCriticalSection DeleteCriticalSection; + WinNtTlsAlloc TlsAlloc; + WinNtTlsFree TlsFree; + WinNtTlsSetValue TlsSetValue; + WinNtTlsGetValue TlsGetValue; + WinNtCreateSemaphore CreateSemaphore; + WinNtWaitForSingleObject WaitForSingleObject; + WinNtReleaseSemaphore ReleaseSemaphore; + + // + // Win32 Console APIs + // + WinNtCreateConsoleScreenBuffer CreateConsoleScreenBuffer; + WinNtFillConsoleOutputAttribute FillConsoleOutputAttribute; + WinNtFillConsoleOutputCharacter FillConsoleOutputCharacter; + WinNtGetConsoleCursorInfo GetConsoleCursorInfo; + WinNtGetNumberOfConsoleInputEvents GetNumberOfConsoleInputEvents; + WinNtPeekConsoleInput PeekConsoleInput; + WinNtScrollConsoleScreenBuffer ScrollConsoleScreenBuffer; + WinNtReadConsoleInput ReadConsoleInput; + + WinNtSetConsoleActiveScreenBuffer SetConsoleActiveScreenBuffer; + WinNtSetConsoleCursorInfo SetConsoleCursorInfo; + WinNtSetConsoleCursorPosition SetConsoleCursorPosition; + WinNtSetConsoleScreenBufferSize SetConsoleScreenBufferSize; + WinNtSetConsoleTitleW SetConsoleTitleW; + WinNtWriteConsoleInput WriteConsoleInput; + WinNtWriteConsoleOutput WriteConsoleOutput; + + // + // Win32 File APIs + // + WinNtCreateFile CreateFile; + WinNtDeviceIoControl DeviceIoControl; + WinNtCreateDirectory CreateDirectory; + WinNtRemoveDirectory RemoveDirectory; + WinNtGetFileAttributes GetFileAttributes; + WinNtSetFileAttributes SetFileAttributes; + WinNtCreateFileMapping CreateFileMapping; + WinNtCloseHandle CloseHandle; + WinNtDeleteFile DeleteFile; + WinNtFindFirstFile FindFirstFile; + WinNtFindNextFile FindNextFile; + WinNtFindClose FindClose; + WinNtFlushFileBuffers FlushFileBuffers; + WinNtGetEnvironmentVariable GetEnvironmentVariable; + WinNtGetLastError GetLastError; + WinNtSetErrorMode SetErrorMode; + WinNtGetStdHandle GetStdHandle; + WinNtMapViewOfFileEx MapViewOfFileEx; + WinNtReadFile ReadFile; + WinNtSetEndOfFile SetEndOfFile; + WinNtSetFilePointer SetFilePointer; + WinNtWriteFile WriteFile; + WinNtGetFileInformationByHandle GetFileInformationByHandle; + WinNtGetDiskFreeSpace GetDiskFreeSpace; + WinNtGetDiskFreeSpaceEx GetDiskFreeSpaceEx; + WinNtMoveFile MoveFile; + WinNtSetFileTime SetFileTime; + WinNtSystemTimeToFileTime SystemTimeToFileTime; + + // + // Win32 Time APIs + // + WinNtFileTimeToLocalFileTime FileTimeToLocalFileTime; + WinNtFileTimeToSystemTime FileTimeToSystemTime; + WinNtGetSystemTime GetSystemTime; + WinNtSetSystemTime SetSystemTime; + WinNtGetLocalTime GetLocalTime; + WinNtSetLocalTime SetLocalTime; + WinNtGetTimeZoneInformation GetTimeZoneInformation; + WinNtSetTimeZoneInformation SetTimeZoneInformation; + WinNttimeSetEvent timeSetEvent; + WinNttimeKillEvent timeKillEvent; + + // + // Win32 Serial APIs + // + WinNtClearCommError ClearCommError; + WinNtEscapeCommFunction EscapeCommFunction; + WinNtGetCommModemStatus GetCommModemStatus; + WinNtGetCommState GetCommState; + WinNtSetCommState SetCommState; + WinNtPurgeComm PurgeComm; + WinNtSetCommTimeouts SetCommTimeouts; + + WinNtExitProcess ExitProcess; + + WinNtSprintf SPrintf; + + WinNtGetDesktopWindow GetDesktopWindow; + WinNtGetForegroundWindow GetForegroundWindow; + WinNtCreateWindowEx CreateWindowEx; + WinNtShowWindow ShowWindow; + WinNtUpdateWindow UpdateWindow; + WinNtDestroyWindow DestroyWindow; + WinNtInvalidateRect InvalidateRect; + WinNtGetWindowDC GetWindowDC; + WinNtGetClientRect GetClientRect; + WinNtAdjustWindowRect AdjustWindowRect; + WinNtSetDIBitsToDevice SetDIBitsToDevice; + WinNtBitBlt BitBlt; + WinNtGetDC GetDC; + WinNtReleaseDC ReleaseDC; + WinNtRegisterClassEx RegisterClassEx; + WinNtUnregisterClass UnregisterClass; + + WinNtBeginPaint BeginPaint; + WinNtEndPaint EndPaint; + WinNtPostQuitMessage PostQuitMessage; + WinNtDefWindowProc DefWindowProc; + WinNtLoadIcon LoadIcon; + WinNtLoadCursor LoadCursor; + WinNtGetStockObject GetStockObject; + WinNtSetViewportOrgEx SetViewportOrgEx; + WinNtSetWindowOrgEx SetWindowOrgEx; + WinNtMoveWindow MoveWindow; + WinNtGetWindowRect GetWindowRect; + + WinNtGetMessage GetMessage; + WinNtTranslateMessage TranslateMessage; + WinNtDispatchMessage DispatchMessage; + + WinNtGetProcessHeap GetProcessHeap; + WinNtHeapAlloc HeapAlloc; + WinNtHeapFree HeapFree; + +} EFI_WIN_NT_THUNK_PROTOCOL; + +#endif + +extern EFI_GUID gEfiWinNtThunkProtocolGuid; + +#endif -- cgit v1.2.3