EmulatorPkg: Use HOST_APPLICATION and add MINGW CLANG

* Update EmulatorPkg to use HOST_APPLICATION module type
  instead of USER_DEFINED to align with UnitTestFrameworkPkg
  that uses HOST_APPLICATION for all Host-based unit tests.
* Move [BuildOptions] from host module INFs files to EmulatorPkg
  DSC file. This is required to have finer control over build
  options for MINGW CLANG builds.
* Add support for MINGW CLANG builds.
* Use WIN_HOST_BUILD to simplify the selection of the Windows
  host module or the Linux host module.
* Add missing StackCheckLib mapping
* Override PcdOpensslLibAssemblySourceStyleNasm to TRUE for
  MINGW CLANG builds that use Windows calling convention.
* Add checks for support tool chains with error messages
* Set linker BASE to correct values for DLLs and Applications
  for 32-bit and 64-bit Windows builds.
* Update DEBUG, RELEASE, and NOOPT profiles with correct
  optimization settings and source level debug settings.
* Reduce Visual Studio support to VS2019 and VS2022
* Simplify linker settings for Visual Studio builds.

Signed-off-by: Michael D Kinney <michael.d.kinney@intel.com>
This commit is contained in:
Michael D Kinney 2025-12-28 14:19:43 -08:00 committed by mergify[bot]
parent b294da34ad
commit deeeaa76c0
3 changed files with 254 additions and 73 deletions

View file

@ -17,7 +17,11 @@
PLATFORM_GUID = 05FD064D-1073-E844-936C-A0E16317107D
PLATFORM_VERSION = 0.3
DSC_SPECIFICATION = 0x00010005
!if $(WIN_MINGW32_BUILD)
OUTPUT_DIRECTORY = Build/Emulator$(ARCH)Mingw
!else
OUTPUT_DIRECTORY = Build/Emulator$(ARCH)
!endif
SUPPORTED_ARCHITECTURES = X64|IA32
BUILD_TARGETS = DEBUG|RELEASE|NOOPT
@ -45,6 +49,7 @@
0|DEFAULT
!include MdePkg/MdeLibs.dsc.inc
!include CryptoPkg/CryptoPkgFeatureFlagPcds.dsc.inc
[LibraryClasses]
#
@ -152,7 +157,7 @@
DebugLib|MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSerialPort.inf
TimerLib|EmulatorPkg/Library/PeiTimerLib/PeiTimerLib.inf
[LibraryClasses.common.USER_DEFINED, LibraryClasses.common.BASE]
[LibraryClasses.common.HOST_APPLICATION, LibraryClasses.common.BASE]
DebugLib|MdePkg/Library/BaseDebugLibNull/BaseDebugLibNull.inf
PeCoffExtraActionLib|MdePkg/Library/BasePeCoffExtraActionLibNull/BasePeCoffExtraActionLibNull.inf
MemoryAllocationLib|MdePkg/Library/PeiMemoryAllocationLib/PeiMemoryAllocationLib.inf
@ -163,7 +168,7 @@
PeCoffGetEntryPointLib|MdePkg/Library/BasePeCoffGetEntryPointLib/BasePeCoffGetEntryPointLib.inf
PpiListLib|EmulatorPkg/Library/SecPpiListLib/SecPpiListLib.inf
PeiServicesLib|EmulatorPkg/Library/SecPeiServicesLib/SecPeiServicesLib.inf
StackCheckLib|MdePkg/Library/StackCheckLibNull/StackCheckLibNullHostApplication.inf
[LibraryClasses.common.PEIM, LibraryClasses.common.PEI_CORE]
HobLib|MdePkg/Library/PeiHobLib/PeiHobLib.inf
@ -217,6 +222,14 @@
gEfiMdeModulePkgTokenSpaceGuid.PcdPeiCoreImageLoaderSearchTeSectionFirst|FALSE
gEfiMdeModulePkgTokenSpaceGuid.PcdDxeIplBuildPageTables|FALSE
gEmulatorPkgTokenSpaceGuid.PcdEmulatorLazyLoadSymbols|FALSE
!if $(WIN_MINGW32_BUILD)
#
# When WIN_MINGW32_BUILD is set, -target is set to build Windows application.
# Set PcdOpensslLibAssemblySourceStyleNasm to TRUE to use Openssl NASM
# source files that assume a Windows calling convention.
#
gEfiCryptoPkgTokenSpaceGuid.PcdOpensslLibAssemblySourceStyleNasm|TRUE
!endif
[PcdsFixedAtBuild]
gEfiMdeModulePkgTokenSpaceGuid.PcdImageProtectionPolicy|0x00000000
@ -315,23 +328,15 @@
[Components]
!if "IA32" in $(ARCH) || "X64" in $(ARCH)
!if "MSFT" in $(FAMILY) || $(WIN_HOST_BUILD) == TRUE
!if $(WIN_HOST_BUILD)
##
# Emulator, OS WIN application
# CLANGPDB is cross OS tool chain. It depends on WIN_HOST_BUILD flag
# to build WinHost application.
#
# USER_DEFINED components skip normal NULL lib linking, so we have to link this
# specially here for the libs that have stack guard enabled
##
EmulatorPkg/Win/Host/WinHost.inf
!else
##
# Emulator, OS POSIX application
#
# USER_DEFINED components skip normal NULL lib linking, so we have to link this
# specially here for the libs that have stack guard enabled
##
EmulatorPkg/Unix/Host/Host.inf
!endif
!endif
@ -522,25 +527,253 @@
!endif
!include RedfishPkg/Redfish.dsc.inc
#
# Fail with error message if the OS/Compiler combination is not supported
#
# Operating System and Compiler Compatibility Matrix for EmulatorPkg
#
# +--------------------+--------+----------+------------+-----+----+--------+
# | OS/Compiler | VS2019 | CLANGPDB | CLANGDWARF | GCC | XCODE5 |
# | | VS2022 | | | GCC5 | |
# | | | | | GCCNOLTO | |
# +--------------------+--------+----------+------------+----------+--------+
# | Windows/VS |IA32/X64| | | | |
# | Windows/LLVM/VS | | IA32/X64 | | | |
# | Windows/LLVM/MSYS2 | | | X64 | | |
# | Windows/LLVM/MINGW | | | IA32/X64 | | |
# | Linux/LLVM | | | IA32/X64 | | |
# | Linux/GCC | | | | IA32/X64 | |
# | macOS/XCODE5 | | | | |IA32/X64|
# +--------------------+--------+----------+------------+----------+--------+
#
# * Windows/VS: Windows environment with Visual Studio installed
# * Windows/LLVM/VS: Windows environment with Visual Studio and LLVM 20.1.8 or
# higher installed. The default version of LLVM installed with Visual Studio
# is not supported.
# * https://github.com/llvm/llvm-project/releases
# * EmulatorPkg builds depend on Visual Studio includes/libraries
# * Windows/LLVM/MSYS2: Windows environment with MSYS2 based LLVM 20.1.8 or
# higher installed.
# * https://github.com/tianocore/edk2-edkrepo/releases?q=clang
# * EmulatorPkg builds do not use any Visual Studio includes/libraries
# * MSYS2 based LLVM 20.1.8 does not provide IA32 includes/libraries
# * Windows/LLVM/MINGW: Windows environment with LLVM MINGW 20.1.8 or higher
# installed with UCRT includes/libraries.
# * https://github.com/mstorsjo/llvm-mingw/releases
# * EmulatorPkg builds do not use any Visual Studio includes/libraries
# * UCRT release provide IA32 and X64 includes/libraries
# * Linux/LLVM or Linux/GCC: Linux environment with GCC 13 or higher and
# LLVM 20.1.8 or higher installed. Not all Linux distributions provide IA32
# includes/libraries for Host-based unit tests.
# * EmulatorPkg builds use GCC and LLVM includes/libraries
# * Ubuntu 24.04 apt modules for IA32 and X64 includes/libraries:
# build-essential uuid-dev lcov
# g++-13 gcc-13
# g++-13-x86-64-linux-gnux32 gcc-13-x86-64-linux-gnux32
# llvm-20 clang-20 lld-20 libclang-rt-20-dev
# gcc-multilib g++-multilib libx11-dev libx11-6 libxext6 libxext-dev
# libc6-i386 libc6-dev-i386 libxext6:i386 libxext-dev:i386 linux-libc-dev:i386
# macOS/XCODE: macOS environment with XCODE5 installed.
#
!if $(WIN_MINGW32_BUILD)
!if $(TOOL_CHAIN_TAG) in "VS2019 VS2022"
!error EmulatorPkg not supported for Mingw/VS20xx builds
!endif
!if $(TOOL_CHAIN_TAG) in "CLANGPDB"
!error EmulatorPkg not supported for Mingw/CLANGPDB builds
!endif
!if $(TOOL_CHAIN_TAG) in "GCC GCC5 GCCNOLTO"
!error EmulatorPkg not supported for Mingw/GCC builds
!endif
!else
!if $(WIN_HOST_BUILD)
!if $(TOOL_CHAIN_TAG) in "GCC GCC5 GCCNOLTO"
!error EmulatorPkg not supported for Windows/GCC builds
!endif
!if $(TOOL_CHAIN_TAG) in "CLANGDWARF"
!error EmulatorPkg not supported for Windows/CLANGDWARF builds
!endif
!else
!if $(TOOL_CHAIN_TAG) in "VS2019 VS2022"
!error EmulatorPkg not supported for Linux/VS20xx builds
!endif
!if $(TOOL_CHAIN_TAG) in "CLANGPDB"
!error EmulatorPkg not supported for Linux/CLANGPDB builds
!endif
!endif
!endif
[BuildOptions]
#
# Disable deprecated APIs.
#
*_*_*_CC_FLAGS = -D DISABLE_NEW_DEPRECATED_INTERFACES
#
# Windows/VS20xx using Visual Studio includes and libraries
#
MSFT:DEBUG_*_*_CC_FLAGS = /Od /Oy-
MSFT:NOOPT_*_*_CC_FLAGS = /Od /Oy-
GCC:DEBUG_CLANGPDB_*_CC_FLAGS =-O0 -Wno-unused-command-line-argument -Wno-incompatible-pointer-types -Wno-enum-conversion -Wno-incompatible-pointer-types -Wno-sometimes-uninitialized -Wno-constant-conversion -Wno-main-return-type
MSFT:*_*_*_DLINK_FLAGS = /ALIGN:4096 /FILEALIGN:4096
MSFT:DEBUG_*_*_DLINK_FLAGS = /BASE:0x10000
MSFT:NOOPT_*_*_DLINK_FLAGS = /BASE:0x10000
MSFT:*_*_IA32_DLINK_FLAGS = /BASE:0x010000000
MSFT:*_*_X64_DLINK_FLAGS = /BASE:0x180000000
!if $(WIN_HOST_BUILD) == TRUE
#
# CLANGPDB tool chain depends on WIN_HOST_BUILD flag to generate the windows application.
# Windows/CLANGPDB using Visual Studio includes and libraries
#
CLANGPDB: *_*_*_DLINK_FLAGS = /ALIGN:4096 /FILEALIGN:4096
CLANGPDB:DEBUG_*_*_DLINK_FLAGS = /BASE:0x10000
CLANGPDB:NOOPT_*_*_DLINK_FLAGS = /BASE:0x10000
CLANGPDB:RELEASE_*_*_CC_FLAGS = -g0
CLANGPDB:DEBUG_*_*_CC_FLAGS = -g3 -fno-lto -O0
CLANGPDB:NOOPT_*_*_CC_FLAGS = -g3 -fno-lto
CLANGPDB:*_*_*_DLINK_FLAGS = /ALIGN:4096 /FILEALIGN:4096
CLANGPDB:*_*_IA32_DLINK_FLAGS = /BASE:0x010000000
CLANGPDB:*_*_X64_DLINK_FLAGS = /BASE:0x180000000
!if $(WIN_MINGW32_BUILD)
#
# Windows/Mingw CLANGDWARF using Mingw CLANG includes and libraries
#
GCC:*_CLANGDWARF_IA32_PP_FLAGS = -target i686-w64-mingw32
GCC:*_CLANGDWARF_X64_PP_FLAGS = -target x86_64-w64-mingw32
GCC:*_CLANGDWARF_X64_CC_FLAGS = -target x86_64-w64-mingw32 -mno-stack-arg-probe
GCC:*_CLANGDWARF_IA32_CC_FLAGS = -target i686-w64-mingw32 -mno-stack-arg-probe
GCC:RELEASE_CLANGDWARF_*_CC_FLAGS = -g0
GCC:DEBUG_CLANGDWARF_*_CC_FLAGS = -g3 -gcodeview -fdebug-macro -fno-omit-frame-pointer -fexceptions -fno-lto -O0
GCC:NOOPT_CLANGDWARF_*_CC_FLAGS = -g3 -gcodeview -fdebug-macro -fno-omit-frame-pointer -fexceptions -fno-lto
GCC:*_CLANGDWARF_X64_NASM_FLAGS = -f win64
GCC:*_CLANGDWARF_IA32_NASM_FLAGS = -f win32
#
# Change Windows/Mingw CLANGDWARF to use llvm-rc instead of objcopy to
# produce HII resources as a PE/COFF library
#
GCC:*_CLANGDWARF_*_GENFWHII_FLAGS == --hiipackage
GCC:*_CLANGDWARF_*_RC_PATH = llvm-rc
GCC:*_CLANGDWARF_*_RC_FLAGS ==
#
# Must override DLINK to use options compatible with Mingw CLANG that is
# subset of GCC options for Windows application targets.
#
# DLINK action does not support -gcodeview that must be set in CC_FLAGS
# to generate PDB symbol information. -Wno-unused-command-line-argument
# is added to ignore the error generated by -gcodeview in DLINK action.
#
GCC:*_CLANGDWARF_*_DLINK_FLAGS == -nostdlib -shared -Wl,--section-alignment=0x1000 -Wl,--file-alignment=0x1000
GCC:*_CLANGDWARF_IA32_DLINK_FLAGS = -target i686-w64-mingw32 -Wl,--entry,__ModuleEntryPoint
GCC:*_CLANGDWARF_X64_DLINK_FLAGS = -target x86_64-w64-mingw32 -Wl,--entry,_ModuleEntryPoint
GCC:DEBUG_CLANGDWARF_*_DLINK_FLAGS = -g -Wl,--pdb,$(DEBUG_DIR)/$(BASE_NAME).pdb -Wno-unused-command-line-argument
GCC:NOOPT_CLANGDWARF_*_DLINK_FLAGS = -g -Wl,--pdb,$(DEBUG_DIR)/$(BASE_NAME).pdb -Wno-unused-command-line-argument
#
# Set DLINK2_FLAGS to empyty string to disable use of linker script
#
GCC:*_CLANGDWARF_X64_DLINK2_FLAGS ==
GCC:*_CLANGDWARF_IA32_DLINK2_FLAGS ==
!endif
GCC:RELEASE_*_*_CC_FLAGS = -g0
GCC:DEBUG_*_*_CC_FLAGS = -g3 -fno-lto -O0
GCC:NOOPT_*_*_CC_FLAGS = -g3 -fno-lto
#
# GCC IA32 CLANGDWARF does not work with -flto.
# Disable LTO for this specific tool chain configuration
#
GCC:RELEASE_CLANGDWARF_IA32_CC_FLAGS = -fno-lto
[Defines]
#
# Defines for settings that are common between MSFT and CLANGPDB tool chain
# families that must use Visual Studio specific defines and libraries when
# building modules of type HOST_APPLICATION
#
!if $(ARCH) in "X64"
DEFINE VS_ARCH_DIR = x64
!endif
!if $(ARCH) in "IA32"
DEFINE VS_ARCH_DIR = x86
!endif
DEFINE VISUAL_STUDIO_DEFINES = -D UNICODE -D _CRT_SECURE_NO_WARNINGS -D _CRT_SECURE_NO_DEPRECATE
DEFINE VISUAL_STUDIO_LIB_PATHS = /LIBPATH:"%VCToolsInstallDir%lib\$(VS_ARCH_DIR)" /LIBPATH:"%UniversalCRTSdkDir%lib\%UCRTVersion%\ucrt\$(VS_ARCH_DIR)" /LIBPATH:"%WindowsSdkDir%lib\%WindowsSDKLibVersion%um\$(VS_ARCH_DIR)"
DEFINE VISUAL_STUDIO_LIBS = Kernel32.lib MSVCRTD.lib vcruntimed.lib ucrtd.lib Gdi32.lib User32.lib Winmm.lib Advapi32.lib
[BuildOptions.common.EDKII.HOST_APPLICATION]
MSFT:*_*_*_CC_FLAGS = $(VISUAL_STUDIO_DEFINES)
#
# Must ovveride DLINK_FLAGS to remove /DLL when linking .exe
#
MSFT:*_*_*_DLINK_FLAGS == /out:"$(BIN_DIR)\$(BASE_NAME).exe" /NOLOGO /SUBSYSTEM:CONSOLE /IGNORE:4086 /MAP /OPT:REF /LTCG
MSFT:*_*_*_DLINK_FLAGS = $(VISUAL_STUDIO_LIB_PATHS) $(VISUAL_STUDIO_LIBS)
MSFT:DEBUG_*_*_DLINK_FLAGS = /DEBUG /pdb:"$(BIN_DIR)\$(BASE_NAME).pdb"
MSFT:NOOPT_*_*_DLINK_FLAGS = /DEBUG /pdb:"$(BIN_DIR)\$(BASE_NAME).pdb"
CLANGPDB:*_*_*_CC_FLAGS = $(VISUAL_STUDIO_DEFINES)
#
# Must ovveride DLINK_FLAGS to remove /DLL when linking .exe
#
CLANGPDB:*_*_*_DLINK_FLAGS == /OUT:"$(BIN_DIR)\$(BASE_NAME).exe" /NOLOGO /SUBSYSTEM:CONSOLE /IGNORE:4086 /OPT:REF /LLDMAP
CLANGPDB:*_*_*_DLINK_FLAGS = $(VISUAL_STUDIO_LIB_PATHS) $(VISUAL_STUDIO_LIBS)
CLANGPDB:DEBUG_*_*_DLINK_FLAGS = /DEBUG /pdb:"$(BIN_DIR)\$(BASE_NAME).pdb"
CLANGPDB:NOOPT_*_*_DLINK_FLAGS = /DEBUG /pdb:"$(BIN_DIR)\$(BASE_NAME).pdb"
#
# GCC RELEASE X64 Host application does not work with -flto.
# Disable LTO for this specific tool chain configuration
#
GCC:RELEASE_*_X64_CC_FLAGS = -fno-lto
#
# Must override DLINK flags to remove -nostdlib because Host application must
# link against standard libraries
#
GCC:*_*_*_DLINK_FLAGS == -o $(BIN_DIR)/Host -z noexecstack
GCC:RELEASE_*_*_DLINK_FLAGS = -flto
GCC:*_*_IA32_DLINK_FLAGS = -m32
GCC:*_*_X64_DLINK_FLAGS = -m64
GCC:*_*_*_DLINK2_FLAGS == -lpthread -ldl -lXext -lX11
!if $(WIN_MINGW32_BUILD)
#
# Windows Mingw CLANGDWARF
#
GCC:*_CLANGDWARF_*_CC_FLAGS = -D UNICODE -D _CRT_SECURE_NO_DEPRECATE -Wno-incompatible-pointer-types
GCC:RELEASE_CLANGDWARF_*_CC_FLAGS = -g0
GCC:DEBUG_CLANGDWARF_*_CC_FLAGS = -g3 -gcodeview -fdebug-macro -fno-omit-frame-pointer -fexceptions -fno-lto -O0
GCC:NOOPT_CLANGDWARF_*_CC_FLAGS = -g3 -gcodeview -fdebug-macro -fno-omit-frame-pointer -fexceptions -fno-lto
#
# Must override DLINK to use options compatible with Mingw CLANG that is
# subset of GCC options for Windows application targets.
#
# DLINK action does not support -gcodeview that must be set in CC_FLAGS
# to generate PDB symbol information. -Wno-unused-command-line-argument
# is added to ignore the error generated by -gcodeview in DLINK action.
#
GCC:*_CLANGDWARF_*_DLINK_FLAGS == -o $(BIN_DIR)/$(BASE_NAME).exe -Wl,--entry,main -lwinmm -lgdi32
GCC:*_CLANGDWARF_IA32_DLINK_FLAGS = -target i686-w64-mingw32
GCC:*_CLANGDWARF_X64_DLINK_FLAGS = -target x86_64-w64-mingw32
GCC:DEBUG_CLANGDWARF_*_DLINK_FLAGS = -g -Wl,--pdb,$(BIN_DIR)/$(BASE_NAME).pdb -Wno-unused-command-line-argument
GCC:NOOPT_CLANGDWARF_*_DLINK_FLAGS = -g -Wl,--pdb,$(BIN_DIR)/$(BASE_NAME).pdb -Wno-unused-command-line-argument
#
# DLINK2_FLAGS must be set to empty string to disable use of linker script
#
GCC:*_CLANGDWARF_IA32_DLINK2_FLAGS ==
GCC:*_CLANGDWARF_X64_DLINK2_FLAGS ==
!endif
#
# Need to do XCODE link via gcc and not ld as the pathing to libraries changes
# from OS version to OS version
#
XCODE:*_*_IA32_DLINK_PATH == gcc
XCODE:*_*_IA32_CC_FLAGS = -I$(WORKSPACE)/EmulatorPkg/Unix/Host/X11IncludeHack
XCODE:*_*_IA32_DLINK_FLAGS == -arch i386 -o $(BIN_DIR)/Host -L/usr/X11R6/lib -lXext -lX11 -framework Carbon
XCODE:*_*_IA32_ASM_FLAGS == -arch i386 -g
XCODE:*_*_X64_DLINK_PATH == gcc
XCODE:*_*_X64_DLINK_FLAGS == -o $(BIN_DIR)/Host -L/usr/X11R6/lib -lXext -lX11 -framework Carbon -Wl,-no_pie
XCODE:*_*_X64_ASM_FLAGS == -g
XCODE:*_*_X64_CC_FLAGS = -O0 -target x86_64-apple-darwin -I$(WORKSPACE)/EmulatorPkg/Unix/Host/X11IncludeHack "-DEFIAPI=__attribute__((ms_abi))"

View file

@ -14,7 +14,7 @@
INF_VERSION = 0x00010005
BASE_NAME = Host
FILE_GUID = 8863C0AD-7724-C84B-88E5-A33B116D1485
MODULE_TYPE = USER_DEFINED
MODULE_TYPE = HOST_APPLICATION
VERSION_STRING = 1.0
#
@ -111,28 +111,3 @@
[FeaturePcd]
gEmulatorPkgTokenSpaceGuid.PcdEmulatorLazyLoadSymbols
[BuildOptions]
GCC:*_*_*_CC_FLAGS == -g -fshort-wchar -fno-strict-aliasing -Wall -malign-double -idirafter/usr/include -c -include $(DEST_DIR_DEBUG)/AutoGen.h -DSTRING_ARRAY_NAME=$(BASE_NAME)Strings
GCC:*_*_IA32_CC_FLAGS = -m32
GCC:*_*_X64_CC_FLAGS = -m64 "-DEFIAPI=__attribute__((ms_abi))" -flto -DUSING_LTO -Os
GCC:*_*_*_DLINK_FLAGS == -o $(BIN_DIR)/Host -z noexecstack -L/usr/X11R6/lib
GCC:*_*_IA32_DLINK_FLAGS = -m32
GCC:*_*_X64_DLINK_FLAGS = -m64 -flto
GCC:*_*_*_DLINK2_FLAGS == -lpthread -ldl -lXext -lX11
#
# Need to do this link via gcc and not ld as the pathing to libraries changes from OS version to OS version
#
XCODE:*_*_IA32_DLINK_PATH == gcc
XCODE:*_*_IA32_CC_FLAGS = -I$(WORKSPACE)/EmulatorPkg/Unix/Host/X11IncludeHack
XCODE:*_*_IA32_DLINK_FLAGS == -arch i386 -o $(BIN_DIR)/Host -L/usr/X11R6/lib -lXext -lX11 -framework Carbon
XCODE:*_*_IA32_ASM_FLAGS == -arch i386 -g
XCODE:*_*_X64_DLINK_PATH == gcc
XCODE:*_*_X64_DLINK_FLAGS == -o $(BIN_DIR)/Host -L/usr/X11R6/lib -lXext -lX11 -framework Carbon -Wl,-no_pie
XCODE:*_*_X64_ASM_FLAGS == -g
XCODE:*_*_X64_CC_FLAGS = -O0 -target x86_64-apple-darwin -I$(WORKSPACE)/EmulatorPkg/Unix/Host/X11IncludeHack "-DEFIAPI=__attribute__((ms_abi))"

View file

@ -15,7 +15,7 @@
INF_VERSION = 0x00010005
BASE_NAME = WinHost
FILE_GUID = 62E8F833-2B0A-4C19-A966-63C180588BE7
MODULE_TYPE = USER_DEFINED
MODULE_TYPE = HOST_APPLICATION
VERSION_STRING = 1.0
#
@ -85,30 +85,3 @@
gEmulatorPkgTokenSpaceGuid.PcdEmuFileSystem
gEmulatorPkgTokenSpaceGuid.PcdPeiServicesTablePage
gEmulatorPkgTokenSpaceGuid.PcdEmuNetworkInterface|L"0"
[BuildOptions]
MSFT:*_*_*_DLINK_FLAGS == /out:"$(BIN_DIR)\$(BASE_NAME).exe" /base:0x10000000 /pdb:"$(BIN_DIR)\$(BASE_NAME).pdb" /EXPORT:InitializeDriver=$(IMAGE_ENTRY_POINT)
MSFT:*_*_*_CC_FLAGS = /nologo /W4 /WX /Gy /c /D UNICODE /Od /Oy- /FIAutoGen.h /EHs-c- /GF /D _CRT_SECURE_NO_WARNINGS /D _CRT_SECURE_NO_DEPRECATE
MSFT:*_*_*_PP_FLAGS == /nologo /E /TC /FIAutoGen.h
MSFT:*_VS2015_IA32_DLINK_FLAGS = /LIBPATH:"%VS2015_PREFIX%Lib" /LIBPATH:"%VS2015_PREFIX%VC\Lib" /LIBPATH:"%UniversalCRTSdkDir%lib\%UCRTVersion%\ucrt\x86" /LIBPATH:"%WindowsSdkDir%lib\%WindowsSDKLibVersion%\um\x86" /NOLOGO /SUBSYSTEM:CONSOLE /NODEFAULTLIB /IGNORE:4086 /MAP /OPT:REF /DEBUG /MACHINE:I386 /LTCG Kernel32.lib MSVCRTD.lib Gdi32.lib User32.lib Winmm.lib Advapi32.lib vcruntimed.lib ucrtd.lib
MSFT:*_VS2015x86_IA32_DLINK_FLAGS = /LIBPATH:"%VS2015_PREFIX%Lib" /LIBPATH:"%VS2015_PREFIX%VC\Lib" /LIBPATH:"%UniversalCRTSdkDir%lib\%UCRTVersion%\ucrt\x86" /LIBPATH:"%WindowsSdkDir%lib\%WindowsSDKLibVersion%\um\x86" /NOLOGO /SUBSYSTEM:CONSOLE /NODEFAULTLIB /IGNORE:4086 /MAP /OPT:REF /DEBUG /MACHINE:I386 /LTCG Kernel32.lib MSVCRTD.lib Gdi32.lib User32.lib Winmm.lib Advapi32.lib vcruntimed.lib ucrtd.lib
MSFT:*_VS2017_IA32_DLINK_FLAGS = /LIBPATH:"%VCToolsInstallDir%lib\x86" /LIBPATH:"%UniversalCRTSdkDir%lib\%UCRTVersion%\ucrt\x86" /LIBPATH:"%WindowsSdkDir%lib\%WindowsSDKLibVersion%\um\x86" /NOLOGO /SUBSYSTEM:CONSOLE /NODEFAULTLIB /IGNORE:4086 /MAP /OPT:REF /DEBUG /MACHINE:I386 /LTCG Kernel32.lib MSVCRTD.lib vcruntimed.lib ucrtd.lib Gdi32.lib User32.lib Winmm.lib Advapi32.lib
MSFT:*_VS2019_IA32_DLINK_FLAGS = /LIBPATH:"%VCToolsInstallDir%lib\x86" /LIBPATH:"%UniversalCRTSdkDir%lib\%UCRTVersion%\ucrt\x86" /LIBPATH:"%WindowsSdkDir%lib\%WindowsSDKLibVersion%\um\x86" /NOLOGO /SUBSYSTEM:CONSOLE /NODEFAULTLIB /IGNORE:4086 /MAP /OPT:REF /DEBUG /MACHINE:I386 /LTCG Kernel32.lib MSVCRTD.lib vcruntimed.lib ucrtd.lib Gdi32.lib User32.lib Winmm.lib Advapi32.lib
MSFT:*_VS2022_IA32_DLINK_FLAGS = /LIBPATH:"%VCToolsInstallDir%lib\x86" /LIBPATH:"%UniversalCRTSdkDir%lib\%UCRTVersion%\ucrt\x86" /LIBPATH:"%WindowsSdkDir%lib\%WindowsSDKLibVersion%\um\x86" /NOLOGO /SUBSYSTEM:CONSOLE /NODEFAULTLIB /IGNORE:4086 /MAP /OPT:REF /DEBUG /MACHINE:I386 /LTCG Kernel32.lib MSVCRTD.lib vcruntimed.lib ucrtd.lib Gdi32.lib User32.lib Winmm.lib Advapi32.lib
MSFT:*_*_IA32_ASM_FLAGS == /nologo /W3 /WX /c /coff /Cx /Zd /W0 /Zi
MSFT:*_*_IA32_ASMLINK_FLAGS == /link /nologo /tiny
MSFT:*_VS2015_X64_DLINK_FLAGS = /LIBPATH:"%VS2015_PREFIX%VC\Lib\AMD64" /LIBPATH:"%UniversalCRTSdkDir%lib\%UCRTVersion%\ucrt\x64" /LIBPATH:"%WindowsSdkDir%lib\%WindowsSDKLibVersion%\um\x64" /NOLOGO /SUBSYSTEM:CONSOLE /NODEFAULTLIB /IGNORE:4086 /MAP /OPT:REF /DEBUG /MACHINE:AMD64 /LTCG Kernel32.lib MSVCRTD.lib vcruntimed.lib ucrtd.lib Gdi32.lib User32.lib Winmm.lib Advapi32.lib
MSFT:*_VS2015x86_X64_DLINK_FLAGS = /LIBPATH:"%VS2015_PREFIX%VC\Lib\AMD64" /LIBPATH:"%UniversalCRTSdkDir%lib\%UCRTVersion%\ucrt\x64" /LIBPATH:"%WindowsSdkDir%lib\%WindowsSDKLibVersion%\um\x64" /NOLOGO /SUBSYSTEM:CONSOLE /NODEFAULTLIB /IGNORE:4086 /MAP /OPT:REF /DEBUG /MACHINE:AMD64 /LTCG Kernel32.lib MSVCRTD.lib vcruntimed.lib ucrtd.lib Gdi32.lib User32.lib Winmm.lib Advapi32.lib
MSFT:*_VS2017_X64_DLINK_FLAGS = /LIBPATH:"%VCToolsInstallDir%lib\x64" /LIBPATH:"%UniversalCRTSdkDir%lib\%UCRTVersion%\ucrt\x64" /LIBPATH:"%WindowsSdkDir%lib\%WindowsSDKLibVersion%\um\x64" /NOLOGO /SUBSYSTEM:CONSOLE /NODEFAULTLIB /IGNORE:4086 /MAP /OPT:REF /DEBUG /MACHINE:AMD64 /LTCG Kernel32.lib MSVCRTD.lib vcruntimed.lib ucrtd.lib Gdi32.lib User32.lib Winmm.lib Advapi32.lib
MSFT:*_VS2019_X64_DLINK_FLAGS = /LIBPATH:"%VCToolsInstallDir%lib\x64" /LIBPATH:"%UniversalCRTSdkDir%lib\%UCRTVersion%\ucrt\x64" /LIBPATH:"%WindowsSdkDir%lib\%WindowsSDKLibVersion%\um\x64" /NOLOGO /SUBSYSTEM:CONSOLE /NODEFAULTLIB /IGNORE:4086 /MAP /OPT:REF /DEBUG /MACHINE:AMD64 /LTCG Kernel32.lib MSVCRTD.lib vcruntimed.lib ucrtd.lib Gdi32.lib User32.lib Winmm.lib Advapi32.lib
MSFT:*_VS2022_X64_DLINK_FLAGS = /LIBPATH:"%VCToolsInstallDir%lib\x64" /LIBPATH:"%UniversalCRTSdkDir%lib\%UCRTVersion%\ucrt\x64" /LIBPATH:"%WindowsSdkDir%lib\%WindowsSDKLibVersion%\um\x64" /NOLOGO /SUBSYSTEM:CONSOLE /NODEFAULTLIB /IGNORE:4086 /MAP /OPT:REF /DEBUG /MACHINE:AMD64 /LTCG Kernel32.lib MSVCRTD.lib vcruntimed.lib ucrtd.lib Gdi32.lib User32.lib Winmm.lib Advapi32.lib
MSFT:*_*_X64_ASM_FLAGS == /nologo /W3 /WX /c /Cx /Zd /W0 /Zi
MSFT:*_*_X64_ASMLINK_FLAGS == /link /nologo
GCC:*_CLANGPDB_X64_DLINK_FLAGS == /out:"$(BIN_DIR)\$(BASE_NAME).exe" /base:0x10000000 /pdb:"$(BIN_DIR)\$(BASE_NAME).pdb" /LIBPATH:"%UniversalCRTSdkDir%lib\%UCRTVersion%\ucrt\x64" /LIBPATH:"%WindowsSdkDir%lib\%WindowsSDKLibVersion%\um\x64" /LIBPATH:"%VCToolsInstallDir%lib\x64" /NOLOGO /SUBSYSTEM:CONSOLE /NODEFAULTLIB /IGNORE:4086 /OPT:REF /DEBUG /MACHINE:AMD64 Kernel32.lib MSVCRTD.lib vcruntimed.lib ucrtd.lib Gdi32.lib User32.lib Winmm.lib Advapi32.lib /lldmap /EXPORT:InitializeDriver=_ModuleEntryPoint
GCC:*_CLANGPDB_X64_CC_FLAGS == -m64 -g -fshort-wchar -fno-strict-aliasing -Wall -c -include AutoGen.h -D _CRT_SECURE_NO_WARNINGS -Wnonportable-include-path -D UNICODE -D _CRT_SECURE_NO_DEPRECATE
GCC:*_CLANGPDB_IA32_DLINK_FLAGS == /out:"$(BIN_DIR)\$(BASE_NAME).exe" /base:0x10000000 /pdb:"$(BIN_DIR)\$(BASE_NAME).pdb" /LIBPATH:"%UniversalCRTSdkDir%lib\%UCRTVersion%\ucrt\x86" /LIBPATH:"%WindowsSdkDir%lib\%WindowsSDKLibVersion%\um\x86" /LIBPATH:"%VCToolsInstallDir%ib\x86" /NOLOGO /SUBSYSTEM:CONSOLE /NODEFAULTLIB /IGNORE:4086 /OPT:REF /DEBUG /MACHINE:I386 Kernel32.lib MSVCRTD.lib vcruntimed.lib ucrtd.lib Gdi32.lib User32.lib Winmm.lib Advapi32.lib /lldmap /EXPORT:InitializeDriver=_ModuleEntryPoint
GCC:*_CLANGPDB_IA32_CC_FLAGS == -m32 -g -fshort-wchar -fno-strict-aliasing -Wall -c -include AutoGen.h -D _CRT_SECURE_NO_WARNINGS -Wnonportable-include-path -D UNICODE -D _CRT_SECURE_NO_DEPRECATE