Home | History | Annotate | Download | only in Conf
      1 #
      2 #  Copyright (c) 2007 - 2015, Intel Corporation. All rights reserved.<BR>
      3 #  Portions copyright (c) 2008 - 2010, Apple Inc. All rights reserved.<BR>
      4 #  This program and the accompanying materials
      5 #  are licensed and made available under the terms and conditions of the BSD License
      6 #  which accompanies this distribution.  The full text of the license may be found at
      7 #  http://opensource.org/licenses/bsd-license.php
      8 
      9 #  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
     10 #  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
     11 #
     12 
     13 ## Syntax
     14 #
     15 # "*" is used to indicate that the source files will be processed at the same time.
     16 # "?" is used to indicate that the source files will be processed one by one.
     17 #
     18 # "[" <File-Type>[.<Build-Type>][.<Arch>][, <File-Type>[.<Build-Type>][.<Arch>]] "]" <EOL>
     19 #   <InputFile[.<ToolChainFamily>]> <EOL>
     20 #       (?|*).<File-Extension> [(\n|,) (?|*).<File-Extension>]
     21 #
     22 #   <OutputFile[.<ToolChainFamily>]> <EOL>
     23 #       <FileFullPath>
     24 #
     25 #   <ExtraDependency>
     26 #       <FileFullPath>
     27 #
     28 #   <Command[.<ToolChainFamily>]> <EOL>
     29 #       <Command1>
     30 #       [<Command2>]
     31 #
     32 # <Build-Type> is the MODULE_TYPE in EDK2 or COMPONENT_TYPE  in EDK.
     33 # Missing <InputFile> will cause an exception and break build.
     34 # Missing <Command> will cause that related build target won't be generated but
     35 #   won't break build.
     36 #
     37 
     38 ## Placeholders for string substitution
     39 #
     40 #   ${src}      Source file(s) to be built (full path)
     41 #   ${s_path}   Source file directory (absolute path)
     42 #   ${s_dir}    Source file relative directory within a module
     43 #               (Note: ${s_dir} is always equals to "." if source file is given in absolute path.)
     44 #   ${s_name}   Source file name without path
     45 #   ${s_base}   Source file name without extension and path
     46 #   ${s_ext}    Source file extension
     47 #
     48 #   ${dst}      Destination file(s) built from ${src} (full path)
     49 #   ${d_path}   Destination file directory (absolute path)
     50 #   ${d_name}   Destination file name without path
     51 #   ${d_base}   Destination file name without extension and path
     52 #   ${d_ext}    Destination file extension
     53 #
     54 #   (+)         Directory separator
     55 #
     56 
     57 ## Macro
     58 #   $(WORKSPACE)        Workspace directory
     59 #   $(OUTPUT_DIR)       Directory for intermediate files for building a module
     60 #   $(DEBUG_DIR)        Directory for files used to debug a module
     61 #   $(BUILD_DIR)        All files for building a platform will be put in this directory
     62 #   $(BIN_DIR)          Common directory for executable files
     63 #   $(FV_DIR)           Directory to store flash image files
     64 #   $(INC)              Search path of current module
     65 #   $(INC_LIST)         A file containing search pathes of current module
     66 #   $(LIBS)             Static library files of current module
     67 #   $(<tool>_FLAGS)     Tools flags of current module
     68 #   $(MODULE_NAME)      Current module name
     69 #   $(MODULE_NAME_GUID) Current module name with module FILE_GUID if same $(MODULE_NAME) exists
     70 #                       in different modules, otherwise its value is same as $(MODULE_NAME)
     71 #   $(MODULE_TYPE)      Current module type
     72 #   $(MODULE_GUID)      Current module guid
     73 #   $(ARCH)             Architecture of current module
     74 #   $(TOOLCHAIN)        Toolchain used to build current module
     75 #   $(TARGET)           Target of current module (DEBUG/RELEASE)
     76 #   $(<tool>)           Path of tool
     77 #   $(EDK_TOOLS_PATH)   Path of build tools
     78 #   $(<FILE_TYPES>)     File list of each file type
     79 #                       (Note: The macro name is derived from file type name. For example,
     80 #                        C-Code-File will have C_CODE_FILES macro.)
     81 #   $(<FILE_TYPES_LIST>) Macro point to a file containing list of files of a file type
     82 #                       (
     83 #                        Note: The macro and file name are derived from file type name.
     84 #                        For example, C-Code-File will have C_CODE_FILES_LIST macro pointing
     85 #                        to $(OUTPUT_DIR)/c_code_files.lst. The list file and macro name
     86 #                        will be generated only when this macro is used in command line.
     87 #                        This is intended to get over the long command line limitation.
     88 #                       )
     89 #
     90 #   $(CP)     copy command
     91 #   $(MV)     move command
     92 #   $(RM)     delete command
     93 #   $(MD)     create dir command
     94 #   $(RD)     remove dir command
     95 #
     96 
     97 ## Reserved File-Type
     98 #
     99 # Don't change following names of file types and their associated files,
    100 # which are also used in tools' code
    101 #
    102 #   C-Code-File
    103 #   C-Header-File
    104 #   Dynamic-Library-File
    105 #   Static-Library-File
    106 #   Visual-Form-Representation-File
    107 #   Unicode-Text-File
    108 #
    109 
    110 ## Build Rule Version Number
    111 #  build_rule_version=0.1
    112 #
    113 
    114 [C-Code-File]
    115     <InputFile>
    116         ?.c
    117         ?.C
    118         ?.cc
    119         ?.CC
    120         ?.cpp
    121         ?.Cpp
    122         ?.CPP
    123 
    124     <ExtraDependency>
    125         $(MAKE_FILE)
    126 
    127     <OutputFile>
    128         $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj
    129 
    130     <Command.MSFT, Command.INTEL>
    131         "$(CC)" /Fo${dst} $(CC_FLAGS) $(INC) ${src}
    132 
    133     <Command.GCC, Command.RVCT>
    134         # For RVCTCYGWIN CC_FLAGS must be first to work around pathing issues
    135         "$(CC)" $(CC_FLAGS) -o ${dst} $(INC) ${src}
    136 
    137     <Command.XCODE>
    138         "$(CC)" $(CC_FLAGS) -o ${dst} $(INC) ${src}
    139 
    140 [C-Code-File.COMMON.IPF]
    141     <InputFile>
    142         ?.c
    143         ?.C
    144         ?.cc
    145         ?.CC
    146         ?.cpp
    147         ?.Cpp
    148         ?.CPP
    149 
    150     <ExtraDependency>
    151         $(MAKE_FILE)
    152 
    153     <OutputFile>
    154         $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj
    155 
    156     <Command.MSFT, Command.INTEL>
    157         "$(CC)" /Fo${dst} $(CC_FLAGS) $(INC) ${src}
    158 
    159     <Command.GCC, Command.RVCT>
    160         # For RVCTCYGWIN CC_FLAGS must be first to work around pathing issues
    161         "$(CC)" $(CC_FLAGS) -o ${dst} $(INC) ${src}
    162         "$(SYMRENAME)" $(SYMRENAME_FLAGS) ${dst}
    163 
    164 [C-Header-File]
    165     <InputFile>
    166         *.h, *.H
    167 
    168     <OutputFile>
    169 
    170     <Command>
    171 
    172 
    173 [Assembly-Code-File.COMMON.COMMON]
    174     <InputFile.MSFT, InputFile.INTEL, InputFile.RVCT>
    175         ?.asm, ?.Asm, ?.ASM
    176 
    177     <InputFile.GCC>
    178         ?.S, ?.s
    179 
    180     <ExtraDependency>
    181         $(MAKE_FILE)
    182 
    183     <OutputFile>
    184         $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj
    185 
    186     <Command.MSFT, Command.INTEL>
    187         "$(PP)" $(PP_FLAGS) $(INC) ${src} > ${d_path}(+)${s_base}.i
    188         Trim --source-code --convert-hex --trim-long -o ${d_path}(+)${s_base}.iii ${d_path}(+)${s_base}.i
    189         "$(ASM)" /Fo${dst} $(ASM_FLAGS) /I${s_path} $(INC) ${d_path}(+)${s_base}.iii
    190 
    191     <Command.GCC, Command.RVCT>
    192         "$(PP)" $(PP_FLAGS) $(INC) ${src} > ${d_path}(+)${s_base}.i
    193         Trim --trim-long --source-code -o ${d_path}(+)${s_base}.iii ${d_path}(+)${s_base}.i
    194         # For RVCTCYGWIN ASM_FLAGS must be first to work around pathing issues
    195         "$(ASM)" $(ASM_FLAGS) -o ${dst} $(INC) ${d_path}(+)${s_base}.iii
    196 
    197 [Nasm-Assembly-Code-File.COMMON.COMMON]
    198     <InputFile>
    199         ?.nasm
    200 
    201     <ExtraDependency>
    202         $(MAKE_FILE)
    203 
    204     <OutputFile>
    205         $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj
    206 
    207     <Command>
    208         "$(PP)" $(PP_FLAGS) $(INC) ${src} > ${d_path}(+)${s_base}.i
    209         Trim --trim-long --source-code -o ${d_path}(+)${s_base}.iii ${d_path}(+)${s_base}.i
    210         "$(NASM)" -I${s_path}(+) $(NASM_FLAGS) -o $dst ${d_path}(+)${s_base}.iii
    211 
    212 [Assembly-Code-File.COMMON.IPF]
    213     <InputFile>
    214         ?.s
    215 
    216     <ExtraDependency>
    217         $(MAKE_FILE)
    218 
    219     <OutputFile>
    220         $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj
    221 
    222     <Command.MSFT, Command.INTEL>
    223         "$(PP)" $(PP_FLAGS) $(INC) ${src} > ${d_path}(+)${s_base}.i
    224         Trim --source-code -o ${d_path}(+)${s_base}.iii ${d_path}(+)${s_base}.i
    225         # For RVCTCYGWIN ASM_FLAGS must be first to work around pathing issues
    226         "$(ASM)" $(ASM_FLAGS) -o ${dst} ${d_path}(+)${s_base}.iii
    227 
    228 [Visual-Form-Representation-File]
    229     <InputFile>
    230         ?.vfr
    231         ?.Vfr
    232         ?.VFR
    233 
    234     <ExtraDependency>
    235         $(MAKE_FILE)
    236 
    237     <OutputFile>
    238         $(DEBUG_DIR)(+)${s_dir}(+)${s_base}.c
    239 
    240     <Command>
    241         "$(VFRPP)" $(VFRPP_FLAGS) $(INC) ${src} > $(OUTPUT_DIR)(+)${s_base}.i
    242         "$(VFR)" $(VFR_FLAGS) --string-db $(OUTPUT_DIR)(+)$(MODULE_NAME)StrDefs.hpk --output-directory ${d_path} $(OUTPUT_DIR)(+)${s_base}.i
    243 
    244 [Object-File]
    245     <InputFile>
    246         *.obj
    247         *.o
    248 
    249     <OutputFile>
    250         $(OUTPUT_DIR)(+)$(MODULE_NAME).lib
    251 
    252     <Command.MSFT, Command.INTEL>
    253         "$(SLINK)" $(SLINK_FLAGS) /OUT:${dst} @$(OBJECT_FILES_LIST)
    254 
    255     <Command.GCC>
    256         "$(SLINK)" -cr ${dst} $(SLINK_FLAGS) @$(OBJECT_FILES_LIST)
    257     
    258     <Command.RVCT>
    259         "$(SLINK)" $(SLINK_FLAGS) ${dst} --via $(OBJECT_FILES_LIST)
    260     
    261     <Command.RVCTCYGWIN>
    262         # $(OBJECT_FILES_LIST) has wrong paths for cygwin
    263         "$(SLINK)" $(SLINK_FLAGS) ${dst} $(OBJECT_FILES)
    264 
    265     <Command.XCODE>
    266         "$(SLINK)" $(SLINK_FLAGS) ${dst} -filelist $(OBJECT_FILES_LIST)
    267 
    268 [Static-Library-File]
    269     <InputFile>
    270         *.lib
    271 
    272     <ExtraDependency>
    273         $(MAKE_FILE)
    274 
    275     <OutputFile>
    276         $(DEBUG_DIR)(+)$(MODULE_NAME).dll
    277 
    278     <Command.MSFT, Command.INTEL>
    279         "$(DLINK)" /OUT:${dst} $(DLINK_FLAGS) $(DLINK_SPATH) @$(STATIC_LIBRARY_FILES_LIST)
    280 
    281     <Command.GCC>
    282         "$(DLINK)" -o ${dst} $(DLINK_FLAGS) --start-group $(DLINK_SPATH) @$(STATIC_LIBRARY_FILES_LIST) --end-group $(DLINK2_FLAGS)
    283         "$(OBJCOPY)" $(OBJCOPY_FLAGS) ${dst}
    284 
    285     <Command.RVCT>
    286         "$(DLINK)" $(DLINK_FLAGS) -o ${dst} $(DLINK_SPATH) --via $(STATIC_LIBRARY_FILES_LIST) $(DLINK2_FLAGS)
    287 
    288     <Command.RVCTCYGWIN>
    289         #$(STATIC_LIBRARY_FILES_LIST) has wrong paths for cygwin
    290         "$(DLINK)" $(DLINK_FLAGS) -o ${dst} $(DLINK_SPATH) $(STATIC_LIBRARY_FILES) $(DLINK2_FLAGS)
    291 
    292     <Command.XCODE>
    293         "$(DLINK)" $(DLINK_FLAGS) -o ${dst} $(DLINK_SPATH) -filelist $(STATIC_LIBRARY_FILES_LIST)  $(DLINK2_FLAGS)
    294     
    295     
    296 [Static-Library-File.USER_DEFINED]
    297     <InputFile>
    298         *.lib
    299 
    300     <ExtraDependency>
    301         $(MAKE_FILE)
    302 
    303     <OutputFile>
    304         $(DEBUG_DIR)(+)$(MODULE_NAME)
    305 
    306     <Command.MSFT, Command.INTEL>
    307         "$(DLINK)" $(DLINK_FLAGS) $(DLINK_SPATH) @$(STATIC_LIBRARY_FILES_LIST)
    308 
    309     <Command.GCC>
    310         "$(DLINK)" $(DLINK_FLAGS) --start-group $(DLINK_SPATH) @$(STATIC_LIBRARY_FILES_LIST) --end-group $(DLINK2_FLAGS)
    311 
    312     <Command.RVCT>
    313         "$(DLINK)" $(DLINK_FLAGS) -o ${dst} $(DLINK_SPATH) --via $(STATIC_LIBRARY_FILES_LIST) $(DLINK2_FLAGS)
    314 
    315     <Command.RVCTCYGWIN>
    316         #$(STATIC_LIBRARY_FILES_LIST) has the wrong paths for cygwin
    317         "$(DLINK)" $(DLINK_FLAGS) -o ${dst} $(DLINK_SPATH) $(STATIC_LIBRARY_FILES) $(DLINK2_FLAGS)
    318 
    319     <Command.XCODE>
    320         "$(DLINK)" -o ${dst} $(DLINK_FLAGS)  $(DLINK_SPATH) -filelist $(STATIC_LIBRARY_FILES_LIST)  $(DLINK2_FLAGS)
    321       
    322       
    323 [Dynamic-Library-File]
    324     <InputFile>
    325         ?.dll
    326 
    327     <OutputFile>
    328         $(DEBUG_DIR)(+)$(MODULE_NAME).efi
    329 
    330     <Command.MSFT, Command.INTEL, Command.RVCT>
    331         "$(GENFW)" -e $(MODULE_TYPE) -o ${dst} ${src} $(GENFW_FLAGS)
    332         $(CP) ${dst} $(OUTPUT_DIR)
    333         $(CP) ${dst} $(BIN_DIR)(+)$(MODULE_NAME_GUID).efi
    334         -$(CP) $(DEBUG_DIR)(+)*.map $(OUTPUT_DIR)
    335         -$(CP) $(DEBUG_DIR)(+)*.pdb $(OUTPUT_DIR) 
    336     <Command.GCC>
    337         $(CP) ${src} $(DEBUG_DIR)(+)$(MODULE_NAME).debug
    338         $(OBJCOPY) --strip-unneeded -R .eh_frame ${src}
    339 
    340         #
    341         #The below 2 lines are only needed for UNIXGCC tool chain, which genereates PE image directly
    342         #
    343         -$(OBJCOPY) $(OBJCOPY_ADDDEBUGFLAG) ${src}
    344         -$(CP) $(DEBUG_DIR)(+)$(MODULE_NAME).debug $(BIN_DIR)(+)$(MODULE_NAME_GUID).debug
    345 
    346         "$(GENFW)" -e $(MODULE_TYPE) -o ${dst} ${src} $(GENFW_FLAGS)
    347         $(CP) ${dst} $(OUTPUT_DIR)
    348         $(CP) ${dst} $(BIN_DIR)(+)$(MODULE_NAME_GUID).efi
    349         -$(CP) $(DEBUG_DIR)(+)*.map $(OUTPUT_DIR)
    350         
    351     <Command.XCODE>
    352         # tool to convert Mach-O to PE/COFF
    353         "$(MTOC)" -subsystem $(MODULE_TYPE)  $(MTOC_FLAGS)  ${src}  $(DEBUG_DIR)(+)$(MODULE_NAME).pecoff
    354         # create symbol file for GDB debug
    355         -$(DSYMUTIL) ${src}
    356         "$(GENFW)" -e $(MODULE_TYPE) -o ${dst} $(DEBUG_DIR)(+)$(MODULE_NAME).pecoff $(GENFW_FLAGS)
    357         $(CP) ${dst} $(OUTPUT_DIR)
    358         $(CP) ${dst} $(BIN_DIR)(+)$(MODULE_NAME_GUID).efi
    359         -$(CP) $(DEBUG_DIR)(+)*.map $(OUTPUT_DIR)
    360 
    361 [Dependency-Expression-File]
    362     <InputFile>
    363         ?.dxs, ?.Dxs, ?.DXS
    364 
    365     <OutputFile>
    366         $(OUTPUT_DIR)(+)$(MODULE_NAME).depex
    367 
    368     <ExtraDependency>
    369         $(MAKE_FILE)
    370 
    371     <Command>
    372         "$(PP)" $(APP_FLAGS) $(INC) ${src} > $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.i
    373         Trim --source-code -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.iii $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.i
    374         GenDepex -t $(MODULE_TYPE) -o ${dst} $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.iii
    375 
    376 [Acpi-Source-Language-File]
    377     <InputFile>
    378         ?.asl, ?.Asl, ?.ASL
    379 
    380     <OutputFile>
    381         $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.aml
    382 
    383     <ExtraDependency>
    384         $(MAKE_FILE)
    385 
    386     <Command.MSFT, Command.INTEL>
    387         Trim --asl-file -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.i -i $(INC_LIST) ${src}
    388         "$(ASLPP)" $(ASLPP_FLAGS) $(INC) /I${s_path} $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.i > $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.iii
    389         Trim --source-code -l -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.iiii $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.iii 
    390         "$(ASL)" $(ASL_FLAGS) $(ASL_OUTFLAGS)${dst} $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.iiii
    391 
    392     <Command.GCC>
    393         Trim --asl-file -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.i -i $(INC_LIST) ${src}
    394         "$(ASLPP)" $(ASLPP_FLAGS) $(INC) -I${s_path} $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.i > $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.iii
    395         Trim --source-code -l -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.iiii $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.iii 
    396         "$(ASL)" $(ASL_FLAGS) $(ASL_OUTFLAGS)${dst} $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.iiii
    397 
    398 [C-Code-File.AcpiTable]
    399     <InputFile>
    400         ?.c
    401 
    402     <OutputFile>
    403         $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.acpi
    404 
    405     <ExtraDependency>
    406         $(MAKE_FILE)
    407 
    408     <Command.MSFT, Command.INTEL>
    409         "$(ASLCC)" /Fo$(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj $(ASLCC_FLAGS) $(INC) ${src}
    410         "$(ASLDLINK)" /OUT:$(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dll $(ASLDLINK_FLAGS) $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj
    411         "$(GENFW)" -o ${dst} -c $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dll $(GENFW_FLAGS)
    412 
    413     <Command.GCC>
    414         "$(ASLCC)" -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj $(CC_FLAGS) $(ASLCC_FLAGS) $(INC) ${src}
    415         "$(ASLDLINK)" -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dll $(ASLDLINK_FLAGS) $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj
    416         "$(GENFW)" -o ${dst} -c $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dll $(GENFW_FLAGS)
    417 
    418 [Acpi-Table-Code-File]
    419     <InputFile>
    420         ?.aslc, ?.act
    421 
    422     <OutputFile>
    423         $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.acpi
    424 
    425     <ExtraDependency>
    426         $(MAKE_FILE)
    427 
    428     <Command.MSFT, Command.INTEL>
    429         "$(ASLCC)" /Fo$(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj $(ASLCC_FLAGS) $(INC) ${src}
    430         "$(ASLDLINK)" /OUT:$(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dll $(ASLDLINK_FLAGS) $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj
    431         "$(GENFW)" -o ${dst} -c $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dll $(GENFW_FLAGS)
    432 
    433     <Command.GCC>
    434         "$(ASLCC)" -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj $(CC_FLAGS) $(ASLCC_FLAGS) $(INC) ${src}
    435         "$(ASLDLINK)" -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dll $(ASLDLINK_FLAGS) $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj
    436         "$(GENFW)" -o ${dst} -c $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dll $(GENFW_FLAGS)
    437         
    438     <Command.XCODE>        
    439         "$(ASLCC)" -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj  $(ASLCC_FLAGS) $(INC) ${src}
    440         "$(ASLDLINK)" -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dll $(ASLDLINK_FLAGS) $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj
    441         "$(MTOC)" -subsystem $(MODULE_TYPE)  $(MTOC_FLAGS) $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dll $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.efi
    442         "$(GENFW)" -o ${dst} -c $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.efi $(GENFW_FLAGS)
    443       
    444       
    445 [Masm16-Code-File]
    446     <InputFile>
    447         ?.asm16, ?.Asm16, ?.ASM16, ?.s16, ?.S16
    448 
    449     <ExtraDependency>
    450         $(MAKE_FILE)
    451 
    452     <OutputFile>
    453         $(OUTPUT_DIR)(+)${s_base}.com
    454 
    455     <Command.MSFT, Command.INTEL>
    456         "$(PP)" $(PP_FLAGS) $(INC) ${src} > ${d_path}(+)${s_base}.i
    457         Trim --source-code --convert-hex --trim-long -o ${d_path}(+)${s_base}.iii ${d_path}(+)${s_base}.i
    458         cd $(OUTPUT_DIR)(+)${s_dir}
    459         "$(ASM16)" /nologo /c /omf $(INC) /Fo$(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj ${d_path}(+)${s_base}.iii
    460         "$(ASMLINK)" $(ASMLINK_FLAGS) $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj,${dst},,,,
    461 
    462     <Command.GCC>
    463       "$(PP)" $(PP_FLAGS) $(INC) ${src} > ${d_path}(+)${s_base}.i
    464       Trim --source-code -o ${d_path}(+)${s_base}.iii ${d_path}(+)${s_base}.i
    465       "$(ASM)" -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj $(ASM_FLAGS) $(INC) ${d_path}(+)${s_base}.iii
    466       "$(DLINK)" -o ${dst} $(DLINK_FLAGS) --start-group $(DLINK_SPATH) $(LIBS) $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj --end-group
    467      
    468     <Command.XCODE>
    469       "$(PP)" $(PP_FLAGS) $(INC) ${src} > ${d_path}(+)${s_base}.i
    470       Trim --source-code -o ${d_path}(+)${s_base}.iii ${d_path}(+)${s_base}.i
    471       "$(ASM)" -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj $(ASM_FLAGS) $(INC) ${d_path}(+)${s_base}.iii
    472       "$(SLINK)" $(SLINK_FLAGS) $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.slib $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj
    473       otool -t $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.slib | hex2bin.py ${dst}
    474       
    475 
    476 [Nasm-to-Binary-Code-File]
    477     <InputFile>
    478         ?.nasmb
    479 
    480     <ExtraDependency>
    481         $(MAKE_FILE)
    482 
    483     <OutputFile>
    484         $(OUTPUT_DIR)(+)${s_base}.bin
    485 
    486     <Command>
    487         "$(PP)" $(PP_FLAGS) $(INC) ${src} > ${d_path}(+)${s_base}.i
    488         Trim --source-code --convert-hex -o ${d_path}(+)${s_base}.iii ${d_path}(+)${s_base}.i
    489         "$(NASM)" -I${s_path}(+) -l ${d_path}(+)${s_base}.lst $(NASMB_FLAGS) -o $dst ${d_path}(+)${s_base}.iii
    490         # copy the output file with .com postfix that be same to the output file of .asm16
    491         $(CP) ${dst} $(OUTPUT_DIR)(+)${s_base}.com
    492 
    493 [Microcode-File.USER_DEFINED, Microcode-File.Microcode]
    494     <InputFile>
    495         ?.txt, ?.TXT, ?.Txt, ?.mut, ?.inc
    496 
    497     <OutputFile>
    498         $(OUTPUT_DIR)(+)${s_base}.mcb
    499 
    500     <Command>
    501         "$(GENFW)" -o ${dst} -m ${src} $(GENFW_FLAGS)
    502 
    503 [Microcode-Binary-File]
    504     <InputFile>
    505         *.mcb
    506 
    507     <ExtraDependency>
    508         $(MAKE_FILE)
    509 
    510     <OutputFile>
    511         $(OUTPUT_DIR)(+)$(MODULE_NAME).bin
    512 
    513     <Command>
    514         "$(GENFW)" -o ${dst} -j $(MICROCODE_BINARY_FILES) $(GENFW_FLAGS)
    515         -$(CP) ${dst} $(BIN_DIR)(+)$(MODULE_NAME_GUID).bin
    516 
    517 [EFI-Image-File]
    518     <InputFile>
    519         ?.efi, ?.Efi, ?.EFI
    520 
    521     <OutputFile>
    522 
    523     <Command>
    524 
    525 [Unicode-Text-File]
    526     <InputFile>
    527         *.uni, *.Uni, *.UNI
    528 
    529     <OutputFile>
    530         $(DEBUG_DIR)(+)AutoGen.c
    531         $(DEBUG_DIR)(+)$(MODULE_NAME)StrDefs.h
    532         $(OUTPUT_DIR)(+)$(MODULE_NAME)StrDefs.hpk
    533 
    534     <Command>
    535 
    536 [Efi-Image.UEFI_OPTIONROM]
    537     <InputFile>
    538         ?.efi, ?.EFI, ?.Efi
    539 
    540     <OutputFile>
    541         $(BIN_DIR)(+)$(MODULE_NAME_GUID).rom
    542 
    543     <Command>
    544         $(OPTROM) -i $(PCI_DEVICE_ID) -f $(PCI_VENDOR_ID) -l $(PCI_CLASS_CODE) -r $(PCI_REVISION) -o $dst $(OPTROM_FLAGS) $src
    545 
    546 [Unicode-Text-File.UEFI_HII]
    547     <InputFile>
    548         *.uni, *.Uni, *.UNI
    549 
    550     <OutputFile>
    551         $(OUTPUT_DIR)(+)$(MODULE_NAME)StrDefs.hpk
    552         $(DEBUG_DIR)(+)$(MODULE_NAME)StrDefs.h
    553 
    554     <Command>
    555 
    556 [Visual-Form-Representation-File.UEFI_HII]
    557     <InputFile>
    558         ?.vfr
    559         ?.Vfr
    560         ?.VFR
    561 
    562     <ExtraDependency>
    563         $(MAKE_FILE)
    564 
    565     <OutputFile>
    566         $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.hpk
    567 
    568     <Command>
    569         "$(VFRPP)" $(VFRPP_FLAGS) $(INC) ${src} > $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.i
    570         "$(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
    571 
    572 [Hii-Binary-Package.UEFI_HII]
    573     <InputFile>
    574         *.hpk
    575 
    576     <OutputFile.MSFT, OutputFile.INTEL, OutputFile.GCC>
    577         $(OUTPUT_DIR)(+)$(MODULE_NAME)hii.lib
    578 
    579     <OutputFile.XCODE, OutputFile.RVCT>
    580         $(OUTPUT_DIR)(+)$(MODULE_NAME)hii.rc
    581 
    582     <Command.MSFT, Command.INTEL>
    583         "$(GENFW)" -o $(OUTPUT_DIR)(+)$(MODULE_NAME)hii.rc -g $(MODULE_GUID) --hiipackage $(HII_BINARY_PACKAGES) $(GENFW_FLAGS)
    584         "$(RC)" /Fo${dst} $(OUTPUT_DIR)(+)$(MODULE_NAME)hii.rc
    585 
    586     <Command.GCC>
    587         "$(GENFW)" -o $(OUTPUT_DIR)(+)$(MODULE_NAME)hii.rc -g $(MODULE_GUID) --hiibinpackage $(HII_BINARY_PACKAGES) $(GENFW_FLAGS)
    588         "$(RC)" $(RC_FLAGS) $(OUTPUT_DIR)(+)$(MODULE_NAME)hii.rc ${dst}
    589         
    590     <Command.XCODE, Command.RVCT>
    591         GenFw -o $(OUTPUT_DIR)(+)$(MODULE_NAME)hii.rc -g $(MODULE_GUID) --hiibinpackage $(HII_BINARY_PACKAGES)
    592         
    593         
    594