]> git.proxmox.com Git - mirror_edk2.git/blobdiff - BaseTools/Conf/build_rule.template
BaseTools Conf: Update tools_def and build_rule to remove IPF setting
[mirror_edk2.git] / BaseTools / Conf / build_rule.template
old mode 100644 (file)
new mode 100755 (executable)
index 17e9d7b..b2667c2
-# file extention   :   file type
-FileTypeMapping = {
-    ".c"    :   "C-Code",
-    ".C"    :   "C-Code",
-    ".cpp"  :   "C-Code",
-    ".Cpp"  :   "C-Code",
-    ".CPP"  :   "C-Code",
-    ".h"    :   "C-Header",
-    ".H"    :   "C-Header",
-    ".inc"  :   "Masm-Header",
-    ".asm"  :   "Masm-Code",
-    ".Asm"  :   "Masm-Code",
-    ".ASM"  :   "Masm-Code",
-    ".asm16"  :   "Masm16-Code",  #RealAsm16 Link Code
-    ".Asm16"  :   "Masm16-Code",
-    ".ASM16"  :   "Masm16-Code",
-    ".s"    :   "Iasm-Code",    # IPF assembly code
-    ".S"    :   "Gasm-Code",    # GNU assembly code
-    ".uni"  :   "Unicode-Text",
-    ".Uni"  :   "Unicode-Text",
-    ".UNI"  :   "Unicode-Text",
-    ".vfr"  :   "Visual-Form-Representation",
-    ".Vfr"  :   "Visual-Form-Representation",
-    ".VFR"  :   "Visual-Form-Representation",
-    ".dxs"  :   "Dependency-Expression",
-    ".Dxs"  :   "Dependency-Expression",
-    ".DXS"  :   "Dependency-Expression",
-    ".TXT"  :   "MicorCode-Text",
-    ".txt"  :   "MicorCode-Text",
-    ".fv"   :   "FirmwareVolume",
-    ".Fv"   :   "FirmwareVolume",
-    ".FV"   :   "FirmwareVolume",
-    ".efi"  :   "Efi-Image",
-    ".Efi"  :   "Efi-Image",
-    ".EFI"  :   "Efi-Image",
-    ".SEC"  :   "Firmware-File-System",
-    ".PEI"  :   "Firmware-File-System",
-    ".DXE"  :   "Firmware-File-System",
-    ".APP"  :   "Firmware-File-System",
-    ".FYI"  :   "Firmware-File-System",
-    ".FFS"  :   "Firmware-File-System",
-    ".bmp"  :   "Bmp-Image",
-    ".i"    :   "Preprocessed-Code",
-    ".asl"  :   "Acpi-Source-Language",
-    ".Asl"  :   "Acpi-Source-Language",
-    ".ASL"  :   "Acpi-Source-Language",
-    ".aslc" :   "Acpi-Table-Source",
-    ".obj"  :   "Object",
-    ".o"    :   "Object",
-    ".lib"  :   "Static-Library",
-    ".a"    :   "Static-Library",
-    ".dll"  :   "Dynamic-Library",
-    ".so"   :   "Dynamic-Library",
-}
-
-ObjectFileMapping = {
-    "C-Code"                        :   ".obj",
-#    "C-Header"                      :   ".gch",
-    "Masm-Code"                     :   ".obj",
-    "Iasm-Code"                     :   ".obj",      # IPF assembly code
-    "Gasm-Code"                     :   ".obj",      # GNU assembly code
-    "Visual-Form-Representation"    :   ".obj",
-    "Preprocessed-Code"             :   ".obj",
-    "Object"                        :   ".dll",
-    "Static-Library"                :   ".dll",
-    "Dynamic-Library"               :   ".efi",
-    "Dependency-Expression"         :   ".depex",
-    "Acpi-Source-Language"          :   ".aml",
-    "Acpi-Table-Source"             :   ".acpi",
-    "Masm16-Code"                   :   ".com",
-    "MicorCode-Text"                :   ".bin",
-}
-
-DefaultToolCode = ["CC", "ASM", "SLINK", "DLINK", "PCH", "PP", "ASL", "ASMLINK"]
-
-ToolCodeMapping = {
-    "C-Code"                        :   ["CC"],
-#    "C-Header"                      :   ["PCH"],
-    "Masm-Code"                     :   ["PP", "ASM"],
-    "Iasm-Code"                     :   ["PP", "ASM"],      # IPF assembly code
-    "Gasm-Code"                     :   ["ASM"],            # GNU assembly code
-    "Visual-Form-Representation"    :   ["PP", "CC"],
-    "Preprocessed-Code"             :   ["CC"],
-    "Acpi-Source-Language"          :   ["ASL"],
-    "Object"                        :   ["SLINK"],
-    "Static-Library"                :   ["DLINK"],
-    "Dependency-Expression"         :   ["PP"],
-    "Acpi-Source-Language"          :   ["PP", "ASL"],
-    "Acpi-Table-Source"             :   ["CC", "DLINK"],
-    "Masm16-Code"                   :   ["ASM", "ASMLINK"],
-    "MicorCode-Text"                :   ["CC"],
-}
-
-ToolChainFamilyMapping = {
-    "C-Code"                        :   ["MSFT", "INTEL", "GCC"],
-    "C-Header"                      :   ["MSFT", "INTEL", "GCC"],
-    "Masm-Code"                     :   ["MSFT", "INTEL"],
-    "Iasm-Code"                     :   ["MSFT", "INTEL"],          # IPF assembly code
-    "Gasm-Code"                     :   ["GCC"],                    # GNU assembly code
-    "Unicode-Text"                  :   ["MSFT", "INTEL", "GCC"],
-    "Visual-Form-Representation"    :   ["MSFT", "INTEL", "GCC"],
-    "Dependency-Expression"         :   ["MSFT", "INTEL", "GCC"],
-    "FirmwareVolume"                :   ["MSFT", "INTEL", "GCC"],
-    "Efi-Image"                     :   ["MSFT", "INTEL", "GCC"],
-    "Firmware-File-System"          :   ["MSFT", "INTEL", "GCC"],
-    "Bmp-Image"                     :   ["MSFT", "INTEL", "GCC"],
-    "Preprocessed-Code"             :   ["MSFT", "INTEL"],
-    "Acpi-Source-Language"          :   ["MSFT", "INTEL"],
-    "Acpi-Table-Source"             :   ["MSFT", "INTEL"],
-    "Masm16-Code"                   :   ["MSFT"],
-    "MicorCode-Text"                :   ["MSFT", "INTEL"], 
-}
-
-## Build rules for makefile
-# Placeholders for string substitution
-#   ${fpath}  File path relative to $(WORKSPACE)
-#   ${fdir}    File relative directory within a module
-#   ${fname}  File full name without path
-#   ${fbase}  File name without extension and path
-#   ${fext}   File extension
-#   ${fdep}   File dependencies
-#   ${_sep_}    Directory separator
-#   ${_of_}     Output flag
-#   ${_if_}     Include flag
-#
-Makefile = {
-# MSFT tool chain family
-"MSFT"  : {
-"C-Code"    : '''\
-$(OUTPUT_DIR)${_sep_}${fdir}${_sep_}${fbase}.obj : $(COMMON_DEPS)
-${BEGIN}$(OUTPUT_DIR)${_sep_}${fdir}${_sep_}${fbase}.obj : $(WORKSPACE)${_sep_}${fdep}
-${END}\t"$(CC)" /Fo$@ $(CC_FLAGS) $(INC) $(WORKSPACE)${_sep_}${fpath}
-''',
-
-"Masm-Code" : '''\
-$(OUTPUT_DIR)${_sep_}${fdir}${_sep_}${fbase}.obj : $(COMMON_DEPS)
-${BEGIN}$(OUTPUT_DIR)${_sep_}${fdir}${_sep_}${fbase}.obj : $(WORKSPACE)${_sep_}${fdep}
-${END}\t"$(PP)" $(PP_FLAGS) $(INC) $(WORKSPACE)${_sep_}${fpath} > $(@D)${_sep_}${fbase}.i
-\tTrim --source-code --convert-hex $(@D)${_sep_}${fbase}.i
-\t"$(ASM)" /Fo$@ $(ASM_FLAGS) $(INC) $(@D)${_sep_}${fbase}.iii
-''',
-
-"Iasm-Code" : '''\
-$(OUTPUT_DIR)${_sep_}${fdir}${_sep_}${fbase}.obj : $(COMMON_DEPS)
-${BEGIN}$(OUTPUT_DIR)${_sep_}${fdir}${_sep_}${fbase}.obj : $(WORKSPACE)${_sep_}${fdep}
-${END}\t"$(APP)" $(APP_FLAGS) $(INC) $(WORKSPACE)${_sep_}${fpath} > $(@D)${_sep_}${fbase}.i
-\t"$(ASM)" -o $@ $(ASM_FLAGS) $(@D)${_sep_}${fbase}.i
-''',
-
-"Visual-Form-Representation" : '''\
-$(OUTPUT_DIR)${_sep_}${fdir}${_sep_}${fbase}.obj : $(COMMON_DEPS)
-${BEGIN}$(OUTPUT_DIR)${_sep_}${fdir}${_sep_}${fbase}.obj : $(WORKSPACE)${_sep_}${fdep}
-${END}\t"$(PP)" $(VFRPP_FLAGS) $(INC) $(WORKSPACE)${_sep_}${fpath} > $(@D)${_sep_}${fbase}.i
-\tTrim --vfr-file $(@D)${_sep_}${fbase}.i
-\t-mkdir $(DEBUG_DIR)${_sep_}${fdir} > NUL 2>&1
-\tVfrCompile -od $(DEBUG_DIR)${_sep_}${fdir} $(@D)${_sep_}${fbase}.iii
-\t"$(CC)" /Fo$@ $(CC_FLAGS) $(INC) $(DEBUG_DIR)${_sep_}${fdir}${_sep_}${fbase}.c
-''',
-
-"Acpi-Source-Language" :
-'''
-$(OUTPUT_DIR)${_sep_}${fdir}${_sep_}${fbase}.aml : $(COMMON_DEPS)
-${BEGIN}$(OUTPUT_DIR)${_sep_}${fdir}${_sep_}${fbase}.aml : $(WORKSPACE)${_sep_}${fdep}
-${END}\t"$(PP)" $(APP_FLAGS) $(INC) $(WORKSPACE)${_sep_}${fpath} > $(@D)${_sep_}${fbase}.i
-\tTrim --source-code $(@D)${_sep_}${fbase}.i
-\t"$(ASL)" -p $@ $(@D)${_sep_}${fbase}.iii
-\t-copy $(OUTPUT_DIR)${_sep_}${fdir}${_sep_}${fbase}.aml $(OUTPUT_DIR)${_sep_}${fbase}.aml /Y
-''',
-
-"Acpi-Table-Source" :
-'''
-$(OUTPUT_DIR)${_sep_}${fdir}${_sep_}${fbase}.acpi : $(COMMON_DEPS)
-${BEGIN}$(OUTPUT_DIR)${_sep_}${fdir}${_sep_}${fbase}.acpi : $(WORKSPACE)${_sep_}${fdep}
-${END}\t"$(CC)" /Fo$(@D)${_sep_}${fbase}.obj $(CC_FLAGS) $(INC) $(WORKSPACE)${_sep_}${fpath}
-\t"$(DLINK)" $(@D)${_sep_}${fbase}.obj /out:$(@D)${_sep_}${fbase}.dll $(SLINK_FLAGS)
-\tGenFw -o $@ -c $(@D)${_sep_}${fbase}.dll
-\t-copy $(OUTPUT_DIR)${_sep_}${fdir}${_sep_}${fbase}.acpi $(OUTPUT_DIR)${_sep_}${fbase}.acpi /Y
-''',
-
-"Masm16-Code" : '''\
-$(OUTPUT_DIR)${_sep_}${fdir}${_sep_}${fbase}.com : $(COMMON_DEPS)
-${BEGIN}$(OUTPUT_DIR)${_sep_}${fdir}${_sep_}${fbase}.com : $(WORKSPACE)${_sep_}${fdep}
-${END}\tpushd .
-\tcd $(OUTPUT_DIR)${_sep_}${fdir}
-\t"$(ASM)" /nologo /omf $(WORKSPACE)${_sep_}${fpath} /Bl"$(ASMLINK)" $(ASMLINK_FLAGS)
-\t-copy ${fbase}.com $(OUTPUT_DIR)${_sep_}${fbase}.com /Y & popd
-''',
-
-"MicorCode-Text" : '''\
-$(OUTPUT_DIR)${_sep_}${fdir}${_sep_}${fbase}.bin : $(COMMON_DEPS)
-${BEGIN}$(OUTPUT_DIR)${_sep_}${fdir}${_sep_}${fbase}.bin : $(WORKSPACE)${_sep_}${fdep}
-${END}\tGenFw -o $@ -m $(WORKSPACE)${_sep_}${fpath}
-''',
-},
-
-#
-# INTEL tool chain family
-#
-"INTEL"  : {
-"C-Code"    : '''\
-$(OUTPUT_DIR)${_sep_}${fdir}${_sep_}${fbase}.obj : $(COMMON_DEPS)
-${BEGIN}$(OUTPUT_DIR)${_sep_}${fdir}${_sep_}${fbase}.obj : $(WORKSPACE)${_sep_}${fdep}
-${END}\t"$(CC)" /Fo$@ $(CC_FLAGS) $(INC) $(WORKSPACE)${_sep_}${fpath}
-''',
-
-"Masm-Code" : '''\
-$(OUTPUT_DIR)${_sep_}${fdir}${_sep_}${fbase}.obj : $(COMMON_DEPS)
-${BEGIN}$(OUTPUT_DIR)${_sep_}${fdir}${_sep_}${fbase}.obj : $(WORKSPACE)${_sep_}${fdep}
-${END}\t"$(PP)" $(PP_FLAGS) $(INC) $(WORKSPACE)${_sep_}${fpath} > $(@D)${_sep_}${fbase}.i
-\tTrim --source-code --convert-hex $(@D)${_sep_}${fbase}.i
-\t"$(ASM)" /Fo$@ $(ASM_FLAGS) $(INC) $(@D)${_sep_}${fbase}.iii
-''',
-
-"Iasm-Code" : '''\
-$(OUTPUT_DIR)${_sep_}${fdir}${_sep_}${fbase}.obj : $(COMMON_DEPS)
-${BEGIN}$(OUTPUT_DIR)${_sep_}${fdir}${_sep_}${fbase}.obj : $(WORKSPACE)${_sep_}${fdep}
-${END}\t"$(APP)" $(APP_FLAGS) $(INC) $(WORKSPACE)${_sep_}${fpath} > $(@D)${_sep_}${fbase}.i
-\t"$(ASM)" -o $@ $(ASM_FLAGS) $(@D)${_sep_}${fbase}.i
-''',
-
-"Visual-Form-Representation" : '''\
-$(OUTPUT_DIR)${_sep_}${fdir}${_sep_}${fbase}.obj : $(COMMON_DEPS)
-${BEGIN}$(OUTPUT_DIR)${_sep_}${fdir}${_sep_}${fbase}.obj : $(WORKSPACE)${_sep_}${fdep}
-${END}\t"$(PP)" $(VFRPP_FLAGS) $(INC) $(WORKSPACE)${_sep_}${fpath} > $(@D)${_sep_}${fbase}.i
-\tTrim --vfr-file $(@D)${_sep_}${fbase}.i
-\t-mkdir $(DEBUG_DIR)${_sep_}${fdir} > NUL 2>&1
-\tVfrCompile -od $(DEBUG_DIR)${_sep_}${fdir} $(@D)${_sep_}${fbase}.iii
-\t"$(CC)" /Fo$@ $(CC_FLAGS) $(INC) $(DEBUG_DIR)${_sep_}${fdir}${_sep_}${fbase}.c
-''',
-
-"Acpi-Source-Language" :
-'''
-$(OUTPUT_DIR)${_sep_}${fdir}${_sep_}${fbase}.aml : $(COMMON_DEPS)
-${BEGIN}$(OUTPUT_DIR)${_sep_}${fdir}${_sep_}${fbase}.aml : $(WORKSPACE)${_sep_}${fdep}
-${END}\t"$(PP)" $(APP_FLAGS) $(INC) $(WORKSPACE)${_sep_}${fpath} > $(@D)${_sep_}${fbase}.i
-\t"$(ASL)" -p $@ $(@D)${_sep_}${fbase}.i
-\t-copy $(OUTPUT_DIR)${_sep_}${fdir}${_sep_}${fbase}.aml $(OUTPUT_DIR)${_sep_}${fbase}.aml /Y
-''',
-
-"Acpi-Table-Source" :
-'''
-$(OUTPUT_DIR)${_sep_}${fdir}${_sep_}${fbase}.acpi : $(COMMON_DEPS)
-${BEGIN}$(OUTPUT_DIR)${_sep_}${fdir}${_sep_}${fbase}.acpi : $(WORKSPACE)${_sep_}${fdep}
-${END}\t"$(CC)" /Fo$(@D)${_sep_}${fbase}.obj $(CC_FLAGS) $(INC) $(WORKSPACE)${_sep_}${fpath}
-\t"$(DLINK)" $(@D)${_sep_}${fbase}.obj /out:$(@D)${_sep_}${fbase}.dll $(SLINK_FLAGS)
-\tGenFw -o $@ -c $(@D)${_sep_}${fbase}.dll
-\t-copy $(OUTPUT_DIR)${_sep_}${fdir}${_sep_}${fbase}.acpi $(OUTPUT_DIR)${_sep_}${fbase}.acpi /Y
-''',
-},
-
-#
-# GCC tool chain family
-#
-"GCC" : {
-
-"C-Code"    : 
-'''
-$(OUTPUT_DIR)${_sep_}${fdir}${_sep_}${fbase}.obj : $(COMMON_DEPS)
-${BEGIN}$(OUTPUT_DIR)${_sep_}${fdir}${_sep_}${fbase}.obj : $(WORKSPACE)${_sep_}${fdep}
-${END}\t"$(CC)" -o $@ $(CC_FLAGS) $(INC) $(WORKSPACE)${_sep_}${fpath}
-''',
-
-"Gasm-Code" : 
-'''
-$(OUTPUT_DIR)${_sep_}${fdir}${_sep_}${fbase}.obj : $(COMMON_DEPS)
-${BEGIN}$(OUTPUT_DIR)${_sep_}${fdir}${_sep_}${fbase}.obj : $(WORKSPACE)${_sep_}${fdep}
-${END}\t"$(ASM)" -o $@ $(ASM_FLAGS) $(INC) $(WORKSPACE)${_sep_}${fpath}
-''',
-
-"Visual-Form-Representation" : 
-'''
-$(OUTPUT_DIR)${_sep_}${fdir}${_sep_}${fbase}.obj : $(COMMON_DEPS)
-${BEGIN}$(OUTPUT_DIR)${_sep_}${fdir}${_sep_}${fbase}.obj : $(WORKSPACE)${_sep_}${fdep}
-${END}\t"$(PP)" $(VFRPP_FLAGS) $(INC) $(WORKSPACE)${_sep_}${fpath} -o $(@D)${_sep_}${fbase}.i
-\tTrim --vfr-file $(@D)${_sep_}${fbase}.i
-\t-mkdir $(DEBUG_DIR)${_sep_}${fdir} > NUL 2>&1
-\tVfrCompile -od $(DEBUG_DIR)${_sep_}${fdir} $(@D)${_sep_}${fbase}.iii
-\t"$(CC)" -o $@ $(CC_FLAGS) $(INC) $(DEBUG_DIR)${_sep_}${fdir}${_sep_}${fbase}.c
-''',
-}
-}
-
-# This acts like the main() function for the script, unless it is 'import'ed into another
-# script.
-if __name__ == '__main__':
-    for ext in FileTypeMapping:
-        print ext,":",FileTypeMapping[ext]
-
-    for type in Makefile["nmake"]:
-        print "[",type,"]\n",Makefile["nmake"][type]
-        print
-
-    for type in Makefile["gmake"]:
-        print "[",type,"]\n",Makefile["gmake"][type]
-        print
-
+#\r
+#  Copyright (c) 2007 - 2015, Intel Corporation. All rights reserved.<BR>\r
+#  Portions copyright (c) 2008 - 2010, Apple Inc. All rights reserved.<BR>\r
+#  This program and the accompanying materials\r
+#  are licensed and made available under the terms and conditions of the BSD License\r
+#  which accompanies this distribution.  The full text of the license may be found at\r
+#  http://opensource.org/licenses/bsd-license.php\r
+\r
+#  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+#  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+\r
+## Syntax\r
+#\r
+# "*" is used to indicate that the source files will be processed at the same time.\r
+# "?" is used to indicate that the source files will be processed one by one.\r
+#\r
+# "[" <File-Type>[.<Build-Type>][.<Arch>][, <File-Type>[.<Build-Type>][.<Arch>]] "]" <EOL>\r
+#   <InputFile[.<ToolChainFamily>]> <EOL>\r
+#       (?|*).<File-Extension> [(\n|,) (?|*).<File-Extension>]\r
+#\r
+#   <OutputFile[.<ToolChainFamily>]> <EOL>\r
+#       <FileFullPath>\r
+#\r
+#   <ExtraDependency>\r
+#       <FileFullPath>\r
+#\r
+#   <Command[.<ToolChainFamily>]> <EOL>\r
+#       <Command1>\r
+#       [<Command2>]\r
+#\r
+# <Build-Type> is the MODULE_TYPE in EDK2 or COMPONENT_TYPE  in EDK.\r
+# Missing <InputFile> will cause an exception and break build.\r
+# Missing <Command> will cause that related build target won't be generated but\r
+#   won't break build.\r
+#\r
+\r
+## Placeholders for string substitution\r
+#\r
+#   ${src}      Source file(s) to be built (full path)\r
+#   ${s_path}   Source file directory (absolute path)\r
+#   ${s_dir}    Source file relative directory within a module\r
+#               (Note: ${s_dir} is always equals to "." if source file is given in absolute path.)\r
+#   ${s_name}   Source file name without path\r
+#   ${s_base}   Source file name without extension and path\r
+#   ${s_ext}    Source file extension\r
+#\r
+#   ${dst}      Destination file(s) built from ${src} (full path)\r
+#   ${d_path}   Destination file directory (absolute path)\r
+#   ${d_name}   Destination file name without path\r
+#   ${d_base}   Destination file name without extension and path\r
+#   ${d_ext}    Destination file extension\r
+#\r
+#   (+)         Directory separator\r
+#\r
+\r
+## Macro\r
+#   $(WORKSPACE)        Workspace directory\r
+#   $(OUTPUT_DIR)       Directory for intermediate files for building a module\r
+#   $(DEBUG_DIR)        Directory for files used to debug a module\r
+#   $(BUILD_DIR)        All files for building a platform will be put in this directory\r
+#   $(BIN_DIR)          Common directory for executable files\r
+#   $(FV_DIR)           Directory to store flash image files\r
+#   $(INC)              Search path of current module\r
+#   $(INC_LIST)         A file containing search pathes of current module\r
+#   $(LIBS)             Static library files of current module\r
+#   $(<tool>_FLAGS)     Tools flags of current module\r
+#   $(MODULE_NAME)      Current module name\r
+#   $(MODULE_NAME_GUID) Current module name with module FILE_GUID if same $(MODULE_NAME) exists\r
+#                       in different modules, otherwise its value is same as $(MODULE_NAME)\r
+#   $(MODULE_TYPE)      Current module type\r
+#   $(MODULE_GUID)      Current module guid\r
+#   $(ARCH)             Architecture of current module\r
+#   $(TOOLCHAIN)        Toolchain used to build current module\r
+#   $(TARGET)           Target of current module (DEBUG/RELEASE)\r
+#   $(<tool>)           Path of tool\r
+#   $(EDK_TOOLS_PATH)   Path of build tools\r
+#   $(<FILE_TYPES>)     File list of each file type\r
+#                       (Note: The macro name is derived from file type name. For example,\r
+#                        C-Code-File will have C_CODE_FILES macro.)\r
+#   $(<FILE_TYPES_LIST>) Macro point to a file containing list of files of a file type\r
+#                       (\r
+#                        Note: The macro and file name are derived from file type name.\r
+#                        For example, C-Code-File will have C_CODE_FILES_LIST macro pointing\r
+#                        to $(OUTPUT_DIR)/c_code_files.lst. The list file and macro name\r
+#                        will be generated only when this macro is used in command line.\r
+#                        This is intended to get over the long command line limitation.\r
+#                       )\r
+#\r
+#   $(CP)     copy command\r
+#   $(MV)     move command\r
+#   $(RM)     delete command\r
+#   $(MD)     create dir command\r
+#   $(RD)     remove dir command\r
+#\r
+\r
+## Reserved File-Type\r
+#\r
+# Don't change following names of file types and their associated files,\r
+# which are also used in tools' code\r
+#\r
+#   C-Code-File\r
+#   C-Header-File\r
+#   Dynamic-Library-File\r
+#   Static-Library-File\r
+#   Visual-Form-Representation-File\r
+#   Unicode-Text-File\r
+#\r
+\r
+## Build Rule Version Number\r
+#  build_rule_version=0.1\r
+#\r
+\r
+[C-Code-File]\r
+    <InputFile>\r
+        ?.c\r
+        ?.C\r
+        ?.cc\r
+        ?.CC\r
+        ?.cpp\r
+        ?.Cpp\r
+        ?.CPP\r
+\r
+    <ExtraDependency>\r
+        $(MAKE_FILE)\r
+\r
+    <OutputFile>\r
+        $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj\r
+\r
+    <Command.MSFT, Command.INTEL>\r
+        "$(CC)" /Fo${dst} $(CC_FLAGS) $(INC) ${src}\r
+\r
+    <Command.GCC, Command.GCCLD, Command.RVCT>\r
+        # For RVCTCYGWIN CC_FLAGS must be first to work around pathing issues\r
+        "$(CC)" $(CC_FLAGS) -c -o ${dst} $(INC) ${src}\r
+\r
+    <Command.XCODE>\r
+        "$(CC)" $(CC_FLAGS) -o ${dst} $(INC) ${src}\r
+\r
+[C-Code-File.BASE.AARCH64,C-Code-File.SEC.AARCH64,C-Code-File.PEI_CORE.AARCH64,C-Code-File.PEIM.AARCH64,C-Code-File.BASE.ARM,C-Code-File.SEC.ARM,C-Code-File.PEI_CORE.ARM,C-Code-File.PEIM.ARM]\r
+    <InputFile>\r
+        ?.c\r
+\r
+    <ExtraDependency>\r
+        $(MAKE_FILE)\r
+\r
+    <OutputFile>\r
+        $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj\r
+\r
+    <Command.GCC, Command.GCCLD, Command.RVCT>\r
+        "$(CC)" $(CC_FLAGS) $(CC_XIPFLAGS) -c -o ${dst} $(INC) ${src}\r
+\r
+[C-Header-File]\r
+    <InputFile>\r
+        *.h, *.H\r
+\r
+    <OutputFile>\r
+\r
+    <Command>\r
+\r
+[Assembly-Code-File.COMMON.COMMON]\r
+    <InputFile.MSFT, InputFile.INTEL, InputFile.RVCT>\r
+        ?.asm, ?.Asm, ?.ASM\r
+\r
+    <InputFile.GCC, InputFile.GCCLD>\r
+        ?.S, ?.s\r
+\r
+    <ExtraDependency>\r
+        $(MAKE_FILE)\r
+\r
+    <OutputFile>\r
+        $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj\r
+\r
+    <Command.MSFT, Command.INTEL>\r
+        "$(PP)" $(PP_FLAGS) $(INC) ${src} > ${d_path}(+)${s_base}.i\r
+        Trim --source-code --convert-hex --trim-long -o ${d_path}(+)${s_base}.iii ${d_path}(+)${s_base}.i\r
+        "$(ASM)" /Fo${dst} $(ASM_FLAGS) /I${s_path} $(INC) ${d_path}(+)${s_base}.iii\r
+\r
+    <Command.GCC, Command.GCCLD, Command.RVCT>\r
+        "$(PP)" $(PP_FLAGS) $(INC) ${src} > ${d_path}(+)${s_base}.i\r
+        Trim --trim-long --source-code -o ${d_path}(+)${s_base}.iii ${d_path}(+)${s_base}.i\r
+        # For RVCTCYGWIN ASM_FLAGS must be first to work around pathing issues\r
+        "$(ASM)" $(ASM_FLAGS) -o ${dst} $(INC) ${d_path}(+)${s_base}.iii\r
+\r
+[Assembly-Code-File.COMMON.ARM,Assembly-Code-File.COMMON.AARCH64]\r
+    # Remove --convert-hex for ARM as it breaks MSFT assemblers\r
+    <InputFile.MSFT, InputFile.INTEL, InputFile.RVCT>\r
+        ?.asm, ?.Asm, ?.ASM\r
+\r
+    <InputFile.GCC, InputFile.GCCLD>\r
+        ?.S, ?.s\r
+\r
+    <ExtraDependency>\r
+        $(MAKE_FILE)\r
+\r
+    <OutputFile>\r
+        $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj\r
+\r
+    <Command.INTEL>\r
+        "$(PP)" $(PP_FLAGS) $(INC) ${src} > ${d_path}(+)${s_base}.i\r
+        Trim --source-code --convert-hex --trim-long -o ${d_path}(+)${s_base}.iii ${d_path}(+)${s_base}.i\r
+        "$(ASM)" /Fo${dst} $(ASM_FLAGS) /I${s_path} $(INC) ${d_path}(+)${s_base}.iii\r
+\r
+    <Command.MSFT>\r
+        "$(PP)" $(PP_FLAGS) $(INC) ${src} > ${d_path}(+)${s_base}.i\r
+        Trim --source-code --trim-long -o ${d_path}(+)${s_base}.iii ${d_path}(+)${s_base}.i\r
+        "$(ASM)" /Fo${dst} $(ASM_FLAGS) /I${s_path} $(INC) ${d_path}(+)${s_base}.iii\r
+\r
+    <Command.GCC, Command.GCCLD, Command.RVCT>\r
+        "$(PP)" $(PP_FLAGS) $(INC) ${src} > ${d_path}(+)${s_base}.i\r
+        Trim --trim-long --source-code -o ${d_path}(+)${s_base}.iii ${d_path}(+)${s_base}.i\r
+        # For RVCTCYGWIN ASM_FLAGS must be first to work around pathing issues\r
+        "$(ASM)" $(ASM_FLAGS) -o ${dst} $(INC) ${d_path}(+)${s_base}.iii\r
+\r
+[Nasm-Assembly-Code-File.COMMON.COMMON]\r
+    <InputFile>\r
+        ?.nasm\r
+\r
+    <ExtraDependency>\r
+        $(MAKE_FILE)\r
+\r
+    <OutputFile>\r
+        $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj\r
+\r
+    <Command>\r
+        "$(PP)" $(PP_FLAGS) $(INC) ${src} > ${d_path}(+)${s_base}.i\r
+        Trim --trim-long --source-code -o ${d_path}(+)${s_base}.iii ${d_path}(+)${s_base}.i\r
+        "$(NASM)" -I${s_path}(+) $(NASM_FLAGS) -o $dst ${d_path}(+)${s_base}.iii\r
+\r
+[Device-Tree-Source-File]\r
+    <InputFile>\r
+        ?.dts\r
+\r
+    <ExtraDependency>\r
+        $(MAKE_FILE)\r
+\r
+    <OutputFile>\r
+        $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dtb\r
+\r
+    <Command.GCC>\r
+        "$(DTCPP)" $(DTCPP_FLAGS) $(INC) ${src} > ${d_path}(+)${s_base}.i\r
+        "$(DTC)" $(DTC_FLAGS) -I dts -O dtb -o ${dst} ${d_path}(+)${s_base}.i\r
+\r
+[Visual-Form-Representation-File]\r
+    <InputFile>\r
+        ?.vfr\r
+        ?.Vfr\r
+        ?.VFR\r
+\r
+    <ExtraDependency>\r
+        $(MAKE_FILE)\r
+\r
+    <OutputFile>\r
+        $(DEBUG_DIR)(+)${s_dir}(+)${s_base}.c\r
+\r
+    <Command>\r
+        "$(VFRPP)" $(VFRPP_FLAGS) $(INC) ${src} > $(OUTPUT_DIR)(+)${s_base}.i\r
+        "$(VFR)" $(VFR_FLAGS) --string-db $(OUTPUT_DIR)(+)$(MODULE_NAME)StrDefs.hpk --output-directory ${d_path} $(OUTPUT_DIR)(+)${s_base}.i\r
+\r
+[Object-File]\r
+    <InputFile>\r
+        *.obj\r
+        *.o\r
+\r
+    <OutputFile>\r
+        $(OUTPUT_DIR)(+)$(MODULE_NAME).lib\r
+\r
+    <Command.MSFT, Command.INTEL>\r
+        "$(SLINK)" $(SLINK_FLAGS) /OUT:${dst} @$(OBJECT_FILES_LIST)\r
+\r
+    <Command.GCC, Command.GCCLD>\r
+        "$(SLINK)" cr ${dst} $(SLINK_FLAGS) @$(OBJECT_FILES_LIST)\r
+    \r
+    <Command.RVCT>\r
+        "$(SLINK)" $(SLINK_FLAGS) ${dst} --via $(OBJECT_FILES_LIST)\r
+    \r
+    <Command.RVCTCYGWIN>\r
+        # $(OBJECT_FILES_LIST) has wrong paths for cygwin\r
+        "$(SLINK)" $(SLINK_FLAGS) ${dst} $(OBJECT_FILES)\r
+\r
+    <Command.XCODE>\r
+        "$(SLINK)" $(SLINK_FLAGS) ${dst} -filelist $(OBJECT_FILES_LIST)\r
+\r
+[Static-Library-File]\r
+    <InputFile>\r
+        *.lib\r
+\r
+    <ExtraDependency>\r
+        $(MAKE_FILE)\r
+\r
+    <OutputFile>\r
+        $(DEBUG_DIR)(+)$(MODULE_NAME).dll\r
+\r
+    <Command.MSFT, Command.INTEL>\r
+        "$(DLINK)" /OUT:${dst} $(DLINK_FLAGS) $(DLINK2_FLAGS) $(DLINK_SPATH) @$(STATIC_LIBRARY_FILES_LIST)\r
+        "$(DLINK)" /OUT:${dst} $(DLINK_FLAGS) $(DLINK_SPATH) @$(STATIC_LIBRARY_FILES_LIST)\r
+\r
+    <Command.GCC>\r
+        "$(DLINK)" -o ${dst} $(DLINK_FLAGS) -Wl,--start-group,@$(STATIC_LIBRARY_FILES_LIST),--end-group $(CC_FLAGS) $(DLINK2_FLAGS)\r
+        "$(OBJCOPY)" $(OBJCOPY_FLAGS) ${dst}\r
+\r
+    <Command.GCCLD>\r
+        "$(DLINK)" -o ${dst} $(DLINK_FLAGS) --start-group $(DLINK_SPATH) @$(STATIC_LIBRARY_FILES_LIST) --end-group $(DLINK2_FLAGS)\r
+        "$(OBJCOPY)" $(OBJCOPY_FLAGS) ${dst}\r
+\r
+    <Command.RVCT>\r
+        "$(DLINK)" $(DLINK_FLAGS) -o ${dst} $(DLINK_SPATH) --via $(STATIC_LIBRARY_FILES_LIST) $(DLINK2_FLAGS)\r
+\r
+    <Command.RVCTCYGWIN>\r
+        #$(STATIC_LIBRARY_FILES_LIST) has wrong paths for cygwin\r
+        "$(DLINK)" $(DLINK_FLAGS) -o ${dst} $(DLINK_SPATH) $(STATIC_LIBRARY_FILES) $(DLINK2_FLAGS)\r
+\r
+    <Command.XCODE>\r
+        "$(DLINK)" $(DLINK_FLAGS) -o ${dst} $(DLINK_SPATH) -filelist $(STATIC_LIBRARY_FILES_LIST)  $(DLINK2_FLAGS)\r
+    \r
+    \r
+[Static-Library-File.SEC.AARCH64, Static-Library-File.PEI_CORE.AARCH64, Static-Library-File.PEIM.AARCH64,Static-Library-File.SEC.ARM, Static-Library-File.PEI_CORE.ARM, Static-Library-File.PEIM.ARM]\r
+    <InputFile>\r
+        *.lib\r
+\r
+    <ExtraDependency>\r
+        $(MAKE_FILE)\r
+\r
+    <OutputFile>\r
+        $(DEBUG_DIR)(+)$(MODULE_NAME).dll\r
+\r
+    <Command.GCC>\r
+        "$(DLINK)" -o ${dst} $(DLINK_FLAGS) $(DLINK_XIPFLAGS) -Wl,--start-group,@$(STATIC_LIBRARY_FILES_LIST),--end-group $(CC_FLAGS) $(CC_XIPFLAGS) $(DLINK2_FLAGS)\r
+        "$(OBJCOPY)" $(OBJCOPY_FLAGS) ${dst}\r
+\r
+\r
+[Static-Library-File.USER_DEFINED]\r
+    <InputFile>\r
+        *.lib\r
+\r
+    <ExtraDependency>\r
+        $(MAKE_FILE)\r
+\r
+    <OutputFile>\r
+        $(DEBUG_DIR)(+)$(MODULE_NAME)\r
+\r
+    <Command.MSFT, Command.INTEL>\r
+        "$(DLINK)" $(DLINK_FLAGS) $(DLINK_SPATH) @$(STATIC_LIBRARY_FILES_LIST)\r
+\r
+    <Command.GCC>\r
+        "$(DLINK)" $(DLINK_FLAGS) -Wl,--start-group,@$(STATIC_LIBRARY_FILES_LIST),--end-group $(DLINK2_FLAGS)\r
+\r
+    <Command.GCCLD>\r
+        "$(DLINK)" $(DLINK_FLAGS) --start-group $(DLINK_SPATH) @$(STATIC_LIBRARY_FILES_LIST) --end-group $(DLINK2_FLAGS)\r
+\r
+    <Command.RVCT>\r
+        "$(DLINK)" $(DLINK_FLAGS) -o ${dst} $(DLINK_SPATH) --via $(STATIC_LIBRARY_FILES_LIST) $(DLINK2_FLAGS)\r
+\r
+    <Command.RVCTCYGWIN>\r
+        #$(STATIC_LIBRARY_FILES_LIST) has the wrong paths for cygwin\r
+        "$(DLINK)" $(DLINK_FLAGS) -o ${dst} $(DLINK_SPATH) $(STATIC_LIBRARY_FILES) $(DLINK2_FLAGS)\r
+\r
+    <Command.XCODE>\r
+        "$(DLINK)" -o ${dst} $(DLINK_FLAGS)  $(DLINK_SPATH) -filelist $(STATIC_LIBRARY_FILES_LIST)  $(DLINK2_FLAGS)\r
+      \r
+      \r
+[Dynamic-Library-File]\r
+    <InputFile>\r
+        ?.dll\r
+\r
+    <OutputFile>\r
+        $(DEBUG_DIR)(+)$(MODULE_NAME).efi\r
+\r
+    <Command.MSFT, Command.INTEL, Command.RVCT>\r
+        "$(GENFW)" -e $(MODULE_TYPE) -o ${dst} ${src} $(GENFW_FLAGS)\r
+        $(CP) ${dst} $(OUTPUT_DIR)\r
+        $(CP) ${dst} $(BIN_DIR)(+)$(MODULE_NAME_GUID).efi\r
+        -$(CP) $(DEBUG_DIR)(+)*.map $(OUTPUT_DIR)\r
+        -$(CP) $(DEBUG_DIR)(+)*.pdb $(OUTPUT_DIR) \r
+    <Command.GCC, Command.GCCLD>\r
+        $(CP) ${src} $(DEBUG_DIR)(+)$(MODULE_NAME).debug\r
+        $(OBJCOPY) --strip-unneeded -R .eh_frame ${src}\r
+\r
+        #\r
+        #The below 2 lines are only needed for UNIXGCC tool chain, which genereates PE image directly\r
+        #\r
+        -$(OBJCOPY) $(OBJCOPY_ADDDEBUGFLAG) ${src}\r
+        -$(CP) $(DEBUG_DIR)(+)$(MODULE_NAME).debug $(BIN_DIR)(+)$(MODULE_NAME_GUID).debug\r
+\r
+        "$(GENFW)" -e $(MODULE_TYPE) -o ${dst} ${src} $(GENFW_FLAGS)\r
+        $(CP) ${dst} $(OUTPUT_DIR)\r
+        $(CP) ${dst} $(BIN_DIR)(+)$(MODULE_NAME_GUID).efi\r
+        -$(CP) $(DEBUG_DIR)(+)*.map $(OUTPUT_DIR)\r
+        \r
+    <Command.XCODE>\r
+        # tool to convert Mach-O to PE/COFF\r
+        "$(MTOC)" -subsystem $(MODULE_TYPE)  $(MTOC_FLAGS)  ${src}  $(DEBUG_DIR)(+)$(MODULE_NAME).pecoff\r
+        # create symbol file for GDB debug\r
+        -$(DSYMUTIL) ${src}\r
+        "$(GENFW)" -e $(MODULE_TYPE) -o ${dst} $(DEBUG_DIR)(+)$(MODULE_NAME).pecoff $(GENFW_FLAGS)\r
+        $(CP) ${dst} $(OUTPUT_DIR)\r
+        $(CP) ${dst} $(BIN_DIR)(+)$(MODULE_NAME_GUID).efi\r
+        -$(CP) $(DEBUG_DIR)(+)*.map $(OUTPUT_DIR)\r
+\r
+[Dependency-Expression-File]\r
+    <InputFile>\r
+        ?.dxs, ?.Dxs, ?.DXS\r
+\r
+    <OutputFile>\r
+        $(OUTPUT_DIR)(+)$(MODULE_NAME).depex\r
+\r
+    <ExtraDependency>\r
+        $(MAKE_FILE)\r
+\r
+    <Command>\r
+        "$(PP)" $(APP_FLAGS) $(INC) ${src} > $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.i\r
+        Trim --source-code -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.iii $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.i\r
+        GenDepex -t $(MODULE_TYPE) -o ${dst} $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.iii\r
+\r
+[Acpi-Source-Language-File]\r
+    <InputFile>\r
+        ?.asl, ?.Asl, ?.ASL\r
+\r
+    <OutputFile>\r
+        $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.aml\r
+\r
+    <ExtraDependency>\r
+        $(MAKE_FILE)\r
+\r
+    <Command.MSFT, Command.INTEL>\r
+        Trim --asl-file -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.i -i $(INC_LIST) ${src}\r
+        "$(ASLPP)" $(ASLPP_FLAGS) $(INC) /I${s_path} $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.i > $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.iii\r
+        Trim --source-code -l -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.iiii $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.iii \r
+        "$(ASL)" $(ASL_FLAGS) $(ASL_OUTFLAGS)${dst} $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.iiii\r
+\r
+    <Command.GCC, Command.GCCLD>\r
+        Trim --asl-file -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.i -i $(INC_LIST) ${src}\r
+        "$(ASLPP)" $(ASLPP_FLAGS) $(INC) -I${s_path} $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.i > $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.iii\r
+        Trim --source-code -l -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.iiii $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.iii \r
+        "$(ASL)" $(ASL_FLAGS) $(ASL_OUTFLAGS)${dst} $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.iiii\r
+\r
+[C-Code-File.AcpiTable]\r
+    <InputFile>\r
+        ?.c\r
+\r
+    <OutputFile>\r
+        $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.acpi\r
+\r
+    <ExtraDependency>\r
+        $(MAKE_FILE)\r
+\r
+    <Command.MSFT, Command.INTEL>\r
+        "$(ASLCC)" /Fo$(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj $(ASLCC_FLAGS) $(INC) ${src}\r
+        "$(ASLDLINK)" /OUT:$(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dll $(ASLDLINK_FLAGS) $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj\r
+        "$(GENFW)" -o ${dst} -c $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dll $(GENFW_FLAGS)\r
+\r
+    <Command.GCC, Command.GCCLD>\r
+        "$(ASLCC)" -c -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj $(CC_FLAGS) $(ASLCC_FLAGS) $(INC) ${src}\r
+        "$(ASLDLINK)" -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dll $(ASLDLINK_FLAGS) $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj\r
+        "$(GENFW)" -o ${dst} -c $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dll $(GENFW_FLAGS)\r
+\r
+[Acpi-Table-Code-File]\r
+    <InputFile>\r
+        ?.aslc, ?.act\r
+\r
+    <OutputFile>\r
+        $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.acpi\r
+\r
+    <ExtraDependency>\r
+        $(MAKE_FILE)\r
+\r
+    <Command.MSFT, Command.INTEL>\r
+        "$(ASLCC)" /Fo$(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj $(ASLCC_FLAGS) $(INC) ${src}\r
+        "$(ASLDLINK)" /OUT:$(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dll $(ASLDLINK_FLAGS) $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj\r
+        "$(GENFW)" -o ${dst} -c $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dll $(GENFW_FLAGS)\r
+\r
+    <Command.GCC, Command.GCCLD>\r
+        "$(ASLCC)" -c -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj $(CC_FLAGS) $(ASLCC_FLAGS) $(INC) ${src}\r
+        "$(ASLDLINK)" -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dll $(ASLDLINK_FLAGS) $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj\r
+        "$(GENFW)" -o ${dst} -c $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dll $(GENFW_FLAGS)\r
+        \r
+    <Command.XCODE>        \r
+        "$(ASLCC)" -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj  $(ASLCC_FLAGS) $(INC) ${src}\r
+        "$(ASLDLINK)" -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dll $(ASLDLINK_FLAGS) $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj\r
+        "$(MTOC)" -subsystem $(MODULE_TYPE)  $(MTOC_FLAGS) $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dll $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.efi\r
+        "$(GENFW)" -o ${dst} -c $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.efi $(GENFW_FLAGS)\r
+      \r
+      \r
+[Masm16-Code-File]\r
+    <InputFile>\r
+        ?.asm16, ?.Asm16, ?.ASM16, ?.s16, ?.S16\r
+\r
+    <ExtraDependency>\r
+        $(MAKE_FILE)\r
+\r
+    <OutputFile>\r
+        $(OUTPUT_DIR)(+)${s_base}.com\r
+\r
+    <Command.MSFT, Command.INTEL>\r
+        "$(PP)" $(PP_FLAGS) $(INC) ${src} > ${d_path}(+)${s_base}.i\r
+        Trim --source-code --convert-hex --trim-long -o ${d_path}(+)${s_base}.iii ${d_path}(+)${s_base}.i\r
+        cd $(OUTPUT_DIR)(+)${s_dir}\r
+        "$(ASM16)" /nologo /c /omf $(INC) /Fo$(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj ${d_path}(+)${s_base}.iii\r
+        "$(ASMLINK)" $(ASMLINK_FLAGS) $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj,${dst},,,,\r
+\r
+    <Command.GCC, Command.GCCLD>\r
+      "$(PP)" $(PP_FLAGS) $(INC) ${src} > ${d_path}(+)${s_base}.i\r
+      Trim --source-code -o ${d_path}(+)${s_base}.iii ${d_path}(+)${s_base}.i\r
+      "$(ASM)" -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj $(ASM_FLAGS) $(INC) ${d_path}(+)${s_base}.iii\r
+      "$(DLINK)" -o ${dst} $(DLINK_FLAGS) --start-group $(DLINK_SPATH) $(LIBS) $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj --end-group\r
+     \r
+    <Command.XCODE>\r
+      "$(PP)" $(PP_FLAGS) $(INC) ${src} > ${d_path}(+)${s_base}.i\r
+      Trim --source-code -o ${d_path}(+)${s_base}.iii ${d_path}(+)${s_base}.i\r
+      "$(ASM)" -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj $(ASM_FLAGS) $(INC) ${d_path}(+)${s_base}.iii\r
+      "$(SLINK)" $(SLINK_FLAGS) $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.slib $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj\r
+      otool -t $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.slib | hex2bin.py ${dst}\r
+      \r
+\r
+[Nasm-to-Binary-Code-File]\r
+    <InputFile>\r
+        ?.nasmb\r
+\r
+    <ExtraDependency>\r
+        $(MAKE_FILE)\r
+\r
+    <OutputFile>\r
+        $(OUTPUT_DIR)(+)${s_base}.bin\r
+\r
+    <Command>\r
+        "$(PP)" $(PP_FLAGS) $(INC) ${src} > ${d_path}(+)${s_base}.i\r
+        Trim --source-code --convert-hex -o ${d_path}(+)${s_base}.iii ${d_path}(+)${s_base}.i\r
+        "$(NASM)" -I${s_path}(+) -l ${d_path}(+)${s_base}.lst $(NASMB_FLAGS) -o $dst ${d_path}(+)${s_base}.iii\r
+        # copy the output file with .com postfix that be same to the output file of .asm16\r
+        $(CP) ${dst} $(OUTPUT_DIR)(+)${s_base}.com\r
+\r
+[Microcode-File.USER_DEFINED, Microcode-File.Microcode]\r
+    <InputFile>\r
+        ?.txt, ?.TXT, ?.Txt, ?.mut, ?.inc\r
+\r
+    <OutputFile>\r
+        $(OUTPUT_DIR)(+)${s_base}.mcb\r
+\r
+    <Command>\r
+        "$(GENFW)" -o ${dst} -m ${src} $(GENFW_FLAGS)\r
+\r
+[Microcode-Binary-File]\r
+    <InputFile>\r
+        *.mcb\r
+\r
+    <ExtraDependency>\r
+        $(MAKE_FILE)\r
+\r
+    <OutputFile>\r
+        $(OUTPUT_DIR)(+)$(MODULE_NAME).bin\r
+\r
+    <Command>\r
+        "$(GENFW)" -o ${dst} -j $(MICROCODE_BINARY_FILES) $(GENFW_FLAGS)\r
+        -$(CP) ${dst} $(BIN_DIR)(+)$(MODULE_NAME_GUID).bin\r
+\r
+[EFI-Image-File]\r
+    <InputFile>\r
+        ?.efi, ?.Efi, ?.EFI\r
+\r
+    <OutputFile>\r
+\r
+    <Command>\r
+\r
+[Unicode-Text-File]\r
+    <InputFile>\r
+        *.uni, *.Uni, *.UNI\r
+\r
+    <OutputFile>\r
+        $(DEBUG_DIR)(+)AutoGen.c\r
+        $(DEBUG_DIR)(+)$(MODULE_NAME)StrDefs.h\r
+        $(OUTPUT_DIR)(+)$(MODULE_NAME)StrDefs.hpk\r
+\r
+    <Command>\r
+\r
+[Image-Definition-File]\r
+    <InputFile>\r
+        *.idf, *.Idf, *.IDF\r
+\r
+    <OutputFile>\r
+        $(DEBUG_DIR)(+)AutoGen.c\r
+        $(DEBUG_DIR)(+)$(MODULE_NAME)ImgDefs.h\r
+        $(OUTPUT_DIR)(+)$(MODULE_NAME)Idf.hpk\r
+\r
+    <Command>\r
+\r
+[Efi-Image.UEFI_OPTIONROM]\r
+    <InputFile>\r
+        ?.efi, ?.EFI, ?.Efi\r
+\r
+    <OutputFile>\r
+        $(BIN_DIR)(+)$(MODULE_NAME_GUID).rom\r
+\r
+    <Command>\r
+        $(OPTROM) -i $(PCI_DEVICE_ID) -f $(PCI_VENDOR_ID) -l $(PCI_CLASS_CODE) -r $(PCI_REVISION) -o $dst $(OPTROM_FLAGS) $src\r
+\r
+[Unicode-Text-File.UEFI_HII]\r
+    <InputFile>\r
+        *.uni, *.Uni, *.UNI\r
+\r
+    <OutputFile>\r
+        $(OUTPUT_DIR)(+)$(MODULE_NAME)StrDefs.hpk\r
+        $(DEBUG_DIR)(+)$(MODULE_NAME)StrDefs.h\r
+\r
+    <Command>\r
+\r
+[Image-Definition-File.UEFI_HII]\r
+    <InputFile>\r
+        *.idf, *.Idf, *.IDF\r
+\r
+    <OutputFile>\r
+        $(DEBUG_DIR)(+)$(MODULE_NAME)ImgDefs.h\r
+        $(OUTPUT_DIR)(+)$(MODULE_NAME)Idf.hpk\r
+\r
+    <Command>\r
+\r
+[Visual-Form-Representation-File.UEFI_HII]\r
+    <InputFile>\r
+        ?.vfr\r
+        ?.Vfr\r
+        ?.VFR\r
+\r
+    <ExtraDependency>\r
+        $(MAKE_FILE)\r
+\r
+    <OutputFile>\r
+        $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.hpk\r
+\r
+    <Command>\r
+        "$(VFRPP)" $(VFRPP_FLAGS) $(INC) ${src} > $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.i\r
+        "$(VFR)" $(VFR_FLAGS) --create-ifr-package --string-db $(OUTPUT_DIR)(+)$(MODULE_NAME)StrDefs.hpk --output-directory $(OUTPUT_DIR)(+)${s_dir} $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.i\r
+\r
+[Hii-Binary-Package.UEFI_HII]\r
+    <InputFile>\r
+        *.hpk\r
+\r
+    <OutputFile.MSFT, OutputFile.INTEL, OutputFile.GCC>\r
+        $(OUTPUT_DIR)(+)$(MODULE_NAME)hii.lib\r
+\r
+    <OutputFile.XCODE, OutputFile.RVCT>\r
+        $(OUTPUT_DIR)(+)$(MODULE_NAME)hii.rc\r
+\r
+    <Command.MSFT, Command.INTEL>\r
+        "$(GENFW)" -o $(OUTPUT_DIR)(+)$(MODULE_NAME)hii.rc -g $(MODULE_GUID) --hiipackage $(HII_BINARY_PACKAGES) $(GENFW_FLAGS)\r
+        "$(RC)" /Fo${dst} $(OUTPUT_DIR)(+)$(MODULE_NAME)hii.rc\r
+\r
+    <Command.GCC, Command.GCCLD>\r
+        "$(GENFW)" -o $(OUTPUT_DIR)(+)$(MODULE_NAME)hii.rc -g $(MODULE_GUID) --hiibinpackage $(HII_BINARY_PACKAGES) $(GENFW_FLAGS)\r
+        "$(RC)" $(RC_FLAGS) $(OUTPUT_DIR)(+)$(MODULE_NAME)hii.rc ${dst}\r
+        \r
+    <Command.XCODE, Command.RVCT>\r
+        GenFw -o $(OUTPUT_DIR)(+)$(MODULE_NAME)hii.rc -g $(MODULE_GUID) --hiibinpackage $(HII_BINARY_PACKAGES)\r
+        \r
+        \r