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.GCCLD, Command.RVCT>
    134         # For RVCTCYGWIN CC_FLAGS must be first to work around pathing issues
    135         "$(CC)" $(CC_FLAGS) -c -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.GCCLD, Command.RVCT>
    160         # For RVCTCYGWIN CC_FLAGS must be first to work around pathing issues
    161         "$(CC)" $(CC_FLAGS) -c -o ${dst} $(INC) ${src}
    162         "$(SYMRENAME)" $(SYMRENAME_FLAGS) ${dst}
    163 
    164 [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]
    165     <InputFile>
    166         ?.c
    167 
    168     <ExtraDependency>
    169         $(MAKE_FILE)
    170 
    171     <OutputFile>
    172         $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj
    173 
    174     <Command.GCC, Command.GCCLD, Command.RVCT>
    175         "$(CC)" $(CC_FLAGS) $(CC_XIPFLAGS) -c -o ${dst} $(INC) ${src}
    176 
    177 [C-Header-File]
    178     <InputFile>
    179         *.h, *.H
    180 
    181     <OutputFile>
    182 
    183     <Command>
    184 
    185 
    186 [Assembly-Code-File.COMMON.COMMON]
    187     <InputFile.MSFT, InputFile.INTEL, InputFile.RVCT>
    188         ?.asm, ?.Asm, ?.ASM
    189 
    190     <InputFile.GCC, InputFile.GCCLD>
    191         ?.S, ?.s
    192 
    193     <ExtraDependency>
    194         $(MAKE_FILE)
    195 
    196     <OutputFile>
    197         $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj
    198 
    199     <Command.MSFT, Command.INTEL>
    200         "$(PP)" $(PP_FLAGS) $(INC) ${src} > ${d_path}(+)${s_base}.i
    201         Trim --source-code --convert-hex --trim-long -o ${d_path}(+)${s_base}.iii ${d_path}(+)${s_base}.i
    202         "$(ASM)" /Fo${dst} $(ASM_FLAGS) /I${s_path} $(INC) ${d_path}(+)${s_base}.iii
    203 
    204     <Command.GCC, Command.GCCLD, Command.RVCT>
    205         "$(PP)" $(PP_FLAGS) $(INC) ${src} > ${d_path}(+)${s_base}.i
    206         Trim --trim-long --source-code -o ${d_path}(+)${s_base}.iii ${d_path}(+)${s_base}.i
    207         # For RVCTCYGWIN ASM_FLAGS must be first to work around pathing issues
    208         "$(ASM)" $(ASM_FLAGS) -o ${dst} $(INC) ${d_path}(+)${s_base}.iii
    209 
    210 [Nasm-Assembly-Code-File.COMMON.COMMON]
    211     <InputFile>
    212         ?.nasm
    213 
    214     <ExtraDependency>
    215         $(MAKE_FILE)
    216 
    217     <OutputFile>
    218         $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj
    219 
    220     <Command>
    221         "$(PP)" $(PP_FLAGS) $(INC) ${src} > ${d_path}(+)${s_base}.i
    222         Trim --trim-long --source-code -o ${d_path}(+)${s_base}.iii ${d_path}(+)${s_base}.i
    223         "$(NASM)" -I${s_path}(+) $(NASM_FLAGS) -o $dst ${d_path}(+)${s_base}.iii
    224 
    225 [Assembly-Code-File.COMMON.IPF]
    226     <InputFile>
    227         ?.s
    228 
    229     <ExtraDependency>
    230         $(MAKE_FILE)
    231 
    232     <OutputFile>
    233         $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj
    234 
    235     <Command.MSFT, Command.INTEL>
    236         "$(PP)" $(PP_FLAGS) $(INC) ${src} > ${d_path}(+)${s_base}.i
    237         Trim --source-code -o ${d_path}(+)${s_base}.iii ${d_path}(+)${s_base}.i
    238         # For RVCTCYGWIN ASM_FLAGS must be first to work around pathing issues
    239         "$(ASM)" $(ASM_FLAGS) -o ${dst} ${d_path}(+)${s_base}.iii
    240 
    241 [Device-Tree-Source-File]
    242     <InputFile>
    243         ?.dts
    244 
    245     <ExtraDependency>
    246         $(MAKE_FILE)
    247 
    248     <OutputFile>
    249         $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dtb
    250 
    251     <Command.GCC>
    252         "$(PP)" $(DTCPP_FLAGS) $(INC) ${src} > ${d_path}(+)${s_base}.i
    253         "$(DTC)" -I dts -O dtb -o ${dst} ${d_path}(+)${s_base}.i
    254 
    255 [Visual-Form-Representation-File]
    256     <InputFile>
    257         ?.vfr
    258         ?.Vfr
    259         ?.VFR
    260 
    261     <ExtraDependency>
    262         $(MAKE_FILE)
    263 
    264     <OutputFile>
    265         $(DEBUG_DIR)(+)${s_dir}(+)${s_base}.c
    266 
    267     <Command>
    268         "$(VFRPP)" $(VFRPP_FLAGS) $(INC) ${src} > $(OUTPUT_DIR)(+)${s_base}.i
    269         "$(VFR)" $(VFR_FLAGS) --string-db $(OUTPUT_DIR)(+)$(MODULE_NAME)StrDefs.hpk --output-directory ${d_path} $(OUTPUT_DIR)(+)${s_base}.i
    270 
    271 [Object-File]
    272     <InputFile>
    273         *.obj
    274         *.o
    275 
    276     <OutputFile>
    277         $(OUTPUT_DIR)(+)$(MODULE_NAME).lib
    278 
    279     <Command.MSFT, Command.INTEL>
    280         "$(SLINK)" $(SLINK_FLAGS) /OUT:${dst} @$(OBJECT_FILES_LIST)
    281 
    282     <Command.GCC, Command.GCCLD>
    283         "$(SLINK)" cr ${dst} $(SLINK_FLAGS) @$(OBJECT_FILES_LIST)
    284     
    285     <Command.RVCT>
    286         "$(SLINK)" $(SLINK_FLAGS) ${dst} --via $(OBJECT_FILES_LIST)
    287     
    288     <Command.RVCTCYGWIN>
    289         # $(OBJECT_FILES_LIST) has wrong paths for cygwin
    290         "$(SLINK)" $(SLINK_FLAGS) ${dst} $(OBJECT_FILES)
    291 
    292     <Command.XCODE>
    293         "$(SLINK)" $(SLINK_FLAGS) ${dst} -filelist $(OBJECT_FILES_LIST)
    294 
    295 [Static-Library-File]
    296     <InputFile>
    297         *.lib
    298 
    299     <ExtraDependency>
    300         $(MAKE_FILE)
    301 
    302     <OutputFile>
    303         $(DEBUG_DIR)(+)$(MODULE_NAME).dll
    304 
    305     <Command.MSFT, Command.INTEL>
    306         "$(DLINK)" /OUT:${dst} $(DLINK_FLAGS) $(DLINK_SPATH) @$(STATIC_LIBRARY_FILES_LIST)
    307 
    308     <Command.GCC>
    309         "$(DLINK)" -o ${dst} $(DLINK_FLAGS) -Wl,--start-group,@$(STATIC_LIBRARY_FILES_LIST),--end-group $(CC_FLAGS) $(DLINK2_FLAGS)
    310         "$(OBJCOPY)" $(OBJCOPY_FLAGS) ${dst}
    311 
    312     <Command.GCCLD>
    313         "$(DLINK)" -o ${dst} $(DLINK_FLAGS) --start-group $(DLINK_SPATH) @$(STATIC_LIBRARY_FILES_LIST) --end-group $(DLINK2_FLAGS)
    314         "$(OBJCOPY)" $(OBJCOPY_FLAGS) ${dst}
    315 
    316     <Command.RVCT>
    317         "$(DLINK)" $(DLINK_FLAGS) -o ${dst} $(DLINK_SPATH) --via $(STATIC_LIBRARY_FILES_LIST) $(DLINK2_FLAGS)
    318 
    319     <Command.RVCTCYGWIN>
    320         #$(STATIC_LIBRARY_FILES_LIST) has wrong paths for cygwin
    321         "$(DLINK)" $(DLINK_FLAGS) -o ${dst} $(DLINK_SPATH) $(STATIC_LIBRARY_FILES) $(DLINK2_FLAGS)
    322 
    323     <Command.XCODE>
    324         "$(DLINK)" $(DLINK_FLAGS) -o ${dst} $(DLINK_SPATH) -filelist $(STATIC_LIBRARY_FILES_LIST)  $(DLINK2_FLAGS)
    325     
    326     
    327 [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]
    328     <InputFile>
    329         *.lib
    330 
    331     <ExtraDependency>
    332         $(MAKE_FILE)
    333 
    334     <OutputFile>
    335         $(DEBUG_DIR)(+)$(MODULE_NAME).dll
    336 
    337     <Command.GCC>
    338         "$(DLINK)" -o ${dst} $(DLINK_FLAGS) $(DLINK_XIPFLAGS) -Wl,--start-group,@$(STATIC_LIBRARY_FILES_LIST),--end-group $(CC_FLAGS) $(CC_XIPFLAGS) $(DLINK2_FLAGS)
    339         "$(OBJCOPY)" $(OBJCOPY_FLAGS) ${dst}
    340 
    341 
    342 [Static-Library-File.USER_DEFINED]
    343     <InputFile>
    344         *.lib
    345 
    346     <ExtraDependency>
    347         $(MAKE_FILE)
    348 
    349     <OutputFile>
    350         $(DEBUG_DIR)(+)$(MODULE_NAME)
    351 
    352     <Command.MSFT, Command.INTEL>
    353         "$(DLINK)" $(DLINK_FLAGS) $(DLINK_SPATH) @$(STATIC_LIBRARY_FILES_LIST)
    354 
    355     <Command.GCC>
    356         "$(DLINK)" $(DLINK_FLAGS) -Wl,--start-group,@$(STATIC_LIBRARY_FILES_LIST),--end-group $(DLINK2_FLAGS)
    357 
    358     <Command.GCCLD>
    359         "$(DLINK)" $(DLINK_FLAGS) --start-group $(DLINK_SPATH) @$(STATIC_LIBRARY_FILES_LIST) --end-group $(DLINK2_FLAGS)
    360 
    361     <Command.RVCT>
    362         "$(DLINK)" $(DLINK_FLAGS) -o ${dst} $(DLINK_SPATH) --via $(STATIC_LIBRARY_FILES_LIST) $(DLINK2_FLAGS)
    363 
    364     <Command.RVCTCYGWIN>
    365         #$(STATIC_LIBRARY_FILES_LIST) has the wrong paths for cygwin
    366         "$(DLINK)" $(DLINK_FLAGS) -o ${dst} $(DLINK_SPATH) $(STATIC_LIBRARY_FILES) $(DLINK2_FLAGS)
    367 
    368     <Command.XCODE>
    369         "$(DLINK)" -o ${dst} $(DLINK_FLAGS)  $(DLINK_SPATH) -filelist $(STATIC_LIBRARY_FILES_LIST)  $(DLINK2_FLAGS)
    370       
    371       
    372 [Dynamic-Library-File]
    373     <InputFile>
    374         ?.dll
    375 
    376     <OutputFile>
    377         $(DEBUG_DIR)(+)$(MODULE_NAME).efi
    378 
    379     <Command.MSFT, Command.INTEL, Command.RVCT>
    380         "$(GENFW)" -e $(MODULE_TYPE) -o ${dst} ${src} $(GENFW_FLAGS)
    381         $(CP) ${dst} $(OUTPUT_DIR)
    382         $(CP) ${dst} $(BIN_DIR)(+)$(MODULE_NAME_GUID).efi
    383         -$(CP) $(DEBUG_DIR)(+)*.map $(OUTPUT_DIR)
    384         -$(CP) $(DEBUG_DIR)(+)*.pdb $(OUTPUT_DIR) 
    385     <Command.GCC, Command.GCCLD>
    386         $(CP) ${src} $(DEBUG_DIR)(+)$(MODULE_NAME).debug
    387         $(OBJCOPY) --strip-unneeded -R .eh_frame ${src}
    388 
    389         #
    390         #The below 2 lines are only needed for UNIXGCC tool chain, which genereates PE image directly
    391         #
    392         -$(OBJCOPY) $(OBJCOPY_ADDDEBUGFLAG) ${src}
    393         -$(CP) $(DEBUG_DIR)(+)$(MODULE_NAME).debug $(BIN_DIR)(+)$(MODULE_NAME_GUID).debug
    394 
    395         "$(GENFW)" -e $(MODULE_TYPE) -o ${dst} ${src} $(GENFW_FLAGS)
    396         $(CP) ${dst} $(OUTPUT_DIR)
    397         $(CP) ${dst} $(BIN_DIR)(+)$(MODULE_NAME_GUID).efi
    398         -$(CP) $(DEBUG_DIR)(+)*.map $(OUTPUT_DIR)
    399         
    400     <Command.XCODE>
    401         # tool to convert Mach-O to PE/COFF
    402         "$(MTOC)" -subsystem $(MODULE_TYPE)  $(MTOC_FLAGS)  ${src}  $(DEBUG_DIR)(+)$(MODULE_NAME).pecoff
    403         # create symbol file for GDB debug
    404         -$(DSYMUTIL) ${src}
    405         "$(GENFW)" -e $(MODULE_TYPE) -o ${dst} $(DEBUG_DIR)(+)$(MODULE_NAME).pecoff $(GENFW_FLAGS)
    406         $(CP) ${dst} $(OUTPUT_DIR)
    407         $(CP) ${dst} $(BIN_DIR)(+)$(MODULE_NAME_GUID).efi
    408         -$(CP) $(DEBUG_DIR)(+)*.map $(OUTPUT_DIR)
    409 
    410 [Dependency-Expression-File]
    411     <InputFile>
    412         ?.dxs, ?.Dxs, ?.DXS
    413 
    414     <OutputFile>
    415         $(OUTPUT_DIR)(+)$(MODULE_NAME).depex
    416 
    417     <ExtraDependency>
    418         $(MAKE_FILE)
    419 
    420     <Command>
    421         "$(PP)" $(APP_FLAGS) $(INC) ${src} > $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.i
    422         Trim --source-code -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.iii $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.i
    423         GenDepex -t $(MODULE_TYPE) -o ${dst} $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.iii
    424 
    425 [Acpi-Source-Language-File]
    426     <InputFile>
    427         ?.asl, ?.Asl, ?.ASL
    428 
    429     <OutputFile>
    430         $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.aml
    431 
    432     <ExtraDependency>
    433         $(MAKE_FILE)
    434 
    435     <Command.MSFT, Command.INTEL>
    436         Trim --asl-file -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.i -i $(INC_LIST) ${src}
    437         "$(ASLPP)" $(ASLPP_FLAGS) $(INC) /I${s_path} $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.i > $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.iii
    438         Trim --source-code -l -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.iiii $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.iii 
    439         "$(ASL)" $(ASL_FLAGS) $(ASL_OUTFLAGS)${dst} $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.iiii
    440 
    441     <Command.GCC, Command.GCCLD>
    442         Trim --asl-file -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.i -i $(INC_LIST) ${src}
    443         "$(ASLPP)" $(ASLPP_FLAGS) $(INC) -I${s_path} $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.i > $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.iii
    444         Trim --source-code -l -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.iiii $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.iii 
    445         "$(ASL)" $(ASL_FLAGS) $(ASL_OUTFLAGS)${dst} $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.iiii
    446 
    447 [C-Code-File.AcpiTable]
    448     <InputFile>
    449         ?.c
    450 
    451     <OutputFile>
    452         $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.acpi
    453 
    454     <ExtraDependency>
    455         $(MAKE_FILE)
    456 
    457     <Command.MSFT, Command.INTEL>
    458         "$(ASLCC)" /Fo$(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj $(ASLCC_FLAGS) $(INC) ${src}
    459         "$(ASLDLINK)" /OUT:$(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dll $(ASLDLINK_FLAGS) $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj
    460         "$(GENFW)" -o ${dst} -c $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dll $(GENFW_FLAGS)
    461 
    462     <Command.GCC, Command.GCCLD>
    463         "$(ASLCC)" -c -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj $(CC_FLAGS) $(ASLCC_FLAGS) $(INC) ${src}
    464         "$(ASLDLINK)" -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dll $(ASLDLINK_FLAGS) $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj
    465         "$(GENFW)" -o ${dst} -c $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dll $(GENFW_FLAGS)
    466 
    467 [Acpi-Table-Code-File]
    468     <InputFile>
    469         ?.aslc, ?.act
    470 
    471     <OutputFile>
    472         $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.acpi
    473 
    474     <ExtraDependency>
    475         $(MAKE_FILE)
    476 
    477     <Command.MSFT, Command.INTEL>
    478         "$(ASLCC)" /Fo$(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj $(ASLCC_FLAGS) $(INC) ${src}
    479         "$(ASLDLINK)" /OUT:$(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dll $(ASLDLINK_FLAGS) $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj
    480         "$(GENFW)" -o ${dst} -c $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dll $(GENFW_FLAGS)
    481 
    482     <Command.GCC, Command.GCCLD>
    483         "$(ASLCC)" -c -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj $(CC_FLAGS) $(ASLCC_FLAGS) $(INC) ${src}
    484         "$(ASLDLINK)" -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dll $(ASLDLINK_FLAGS) $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj
    485         "$(GENFW)" -o ${dst} -c $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dll $(GENFW_FLAGS)
    486         
    487     <Command.XCODE>        
    488         "$(ASLCC)" -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj  $(ASLCC_FLAGS) $(INC) ${src}
    489         "$(ASLDLINK)" -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dll $(ASLDLINK_FLAGS) $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj
    490         "$(MTOC)" -subsystem $(MODULE_TYPE)  $(MTOC_FLAGS) $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dll $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.efi
    491         "$(GENFW)" -o ${dst} -c $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.efi $(GENFW_FLAGS)
    492       
    493       
    494 [Masm16-Code-File]
    495     <InputFile>
    496         ?.asm16, ?.Asm16, ?.ASM16, ?.s16, ?.S16
    497 
    498     <ExtraDependency>
    499         $(MAKE_FILE)
    500 
    501     <OutputFile>
    502         $(OUTPUT_DIR)(+)${s_base}.com
    503 
    504     <Command.MSFT, Command.INTEL>
    505         "$(PP)" $(PP_FLAGS) $(INC) ${src} > ${d_path}(+)${s_base}.i
    506         Trim --source-code --convert-hex --trim-long -o ${d_path}(+)${s_base}.iii ${d_path}(+)${s_base}.i
    507         cd $(OUTPUT_DIR)(+)${s_dir}
    508         "$(ASM16)" /nologo /c /omf $(INC) /Fo$(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj ${d_path}(+)${s_base}.iii
    509         "$(ASMLINK)" $(ASMLINK_FLAGS) $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj,${dst},,,,
    510 
    511     <Command.GCC, Command.GCCLD>
    512       "$(PP)" $(PP_FLAGS) $(INC) ${src} > ${d_path}(+)${s_base}.i
    513       Trim --source-code -o ${d_path}(+)${s_base}.iii ${d_path}(+)${s_base}.i
    514       "$(ASM)" -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj $(ASM_FLAGS) $(INC) ${d_path}(+)${s_base}.iii
    515       "$(DLINK)" -o ${dst} $(DLINK_FLAGS) --start-group $(DLINK_SPATH) $(LIBS) $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj --end-group
    516      
    517     <Command.XCODE>
    518       "$(PP)" $(PP_FLAGS) $(INC) ${src} > ${d_path}(+)${s_base}.i
    519       Trim --source-code -o ${d_path}(+)${s_base}.iii ${d_path}(+)${s_base}.i
    520       "$(ASM)" -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj $(ASM_FLAGS) $(INC) ${d_path}(+)${s_base}.iii
    521       "$(SLINK)" $(SLINK_FLAGS) $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.slib $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj
    522       otool -t $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.slib | hex2bin.py ${dst}
    523       
    524 
    525 [Nasm-to-Binary-Code-File]
    526     <InputFile>
    527         ?.nasmb
    528 
    529     <ExtraDependency>
    530         $(MAKE_FILE)
    531 
    532     <OutputFile>
    533         $(OUTPUT_DIR)(+)${s_base}.bin
    534 
    535     <Command>
    536         "$(PP)" $(PP_FLAGS) $(INC) ${src} > ${d_path}(+)${s_base}.i
    537         Trim --source-code --convert-hex -o ${d_path}(+)${s_base}.iii ${d_path}(+)${s_base}.i
    538         "$(NASM)" -I${s_path}(+) -l ${d_path}(+)${s_base}.lst $(NASMB_FLAGS) -o $dst ${d_path}(+)${s_base}.iii
    539         # copy the output file with .com postfix that be same to the output file of .asm16
    540         $(CP) ${dst} $(OUTPUT_DIR)(+)${s_base}.com
    541 
    542 [Microcode-File.USER_DEFINED, Microcode-File.Microcode]
    543     <InputFile>
    544         ?.txt, ?.TXT, ?.Txt, ?.mut, ?.inc
    545 
    546     <OutputFile>
    547         $(OUTPUT_DIR)(+)${s_base}.mcb
    548 
    549     <Command>
    550         "$(GENFW)" -o ${dst} -m ${src} $(GENFW_FLAGS)
    551 
    552 [Microcode-Binary-File]
    553     <InputFile>
    554         *.mcb
    555 
    556     <ExtraDependency>
    557         $(MAKE_FILE)
    558 
    559     <OutputFile>
    560         $(OUTPUT_DIR)(+)$(MODULE_NAME).bin
    561 
    562     <Command>
    563         "$(GENFW)" -o ${dst} -j $(MICROCODE_BINARY_FILES) $(GENFW_FLAGS)
    564         -$(CP) ${dst} $(BIN_DIR)(+)$(MODULE_NAME_GUID).bin
    565 
    566 [EFI-Image-File]
    567     <InputFile>
    568         ?.efi, ?.Efi, ?.EFI
    569 
    570     <OutputFile>
    571 
    572     <Command>
    573 
    574 [Unicode-Text-File]
    575     <InputFile>
    576         *.uni, *.Uni, *.UNI
    577 
    578     <OutputFile>
    579         $(DEBUG_DIR)(+)AutoGen.c
    580         $(DEBUG_DIR)(+)$(MODULE_NAME)StrDefs.h
    581         $(OUTPUT_DIR)(+)$(MODULE_NAME)StrDefs.hpk
    582 
    583     <Command>
    584 
    585 [Image-Definition-File]
    586     <InputFile>
    587         *.idf, *.Idf, *.IDF
    588 
    589     <OutputFile>
    590         $(DEBUG_DIR)(+)AutoGen.c
    591         $(DEBUG_DIR)(+)$(MODULE_NAME)ImgDefs.h
    592         $(OUTPUT_DIR)(+)$(MODULE_NAME)Idf.hpk
    593 
    594     <Command>
    595 
    596 [Efi-Image.UEFI_OPTIONROM]
    597     <InputFile>
    598         ?.efi, ?.EFI, ?.Efi
    599 
    600     <OutputFile>
    601         $(BIN_DIR)(+)$(MODULE_NAME_GUID).rom
    602 
    603     <Command>
    604         $(OPTROM) -i $(PCI_DEVICE_ID) -f $(PCI_VENDOR_ID) -l $(PCI_CLASS_CODE) -r $(PCI_REVISION) -o $dst $(OPTROM_FLAGS) $src
    605 
    606 [Unicode-Text-File.UEFI_HII]
    607     <InputFile>
    608         *.uni, *.Uni, *.UNI
    609 
    610     <OutputFile>
    611         $(OUTPUT_DIR)(+)$(MODULE_NAME)StrDefs.hpk
    612         $(DEBUG_DIR)(+)$(MODULE_NAME)StrDefs.h
    613 
    614     <Command>
    615 
    616 [Image-Definition-File.UEFI_HII]
    617     <InputFile>
    618         *.idf, *.Idf, *.IDF
    619 
    620     <OutputFile>
    621         $(DEBUG_DIR)(+)$(MODULE_NAME)ImgDefs.h
    622         $(OUTPUT_DIR)(+)$(MODULE_NAME)Idf.hpk
    623 
    624     <Command>
    625 
    626 [Visual-Form-Representation-File.UEFI_HII]
    627     <InputFile>
    628         ?.vfr
    629         ?.Vfr
    630         ?.VFR
    631 
    632     <ExtraDependency>
    633         $(MAKE_FILE)
    634 
    635     <OutputFile>
    636         $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.hpk
    637 
    638     <Command>
    639         "$(VFRPP)" $(VFRPP_FLAGS) $(INC) ${src} > $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.i
    640         "$(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
    641 
    642 [Hii-Binary-Package.UEFI_HII]
    643     <InputFile>
    644         *.hpk
    645 
    646     <OutputFile.MSFT, OutputFile.INTEL, OutputFile.GCC>
    647         $(OUTPUT_DIR)(+)$(MODULE_NAME)hii.lib
    648 
    649     <OutputFile.XCODE, OutputFile.RVCT>
    650         $(OUTPUT_DIR)(+)$(MODULE_NAME)hii.rc
    651 
    652     <Command.MSFT, Command.INTEL>
    653         "$(GENFW)" -o $(OUTPUT_DIR)(+)$(MODULE_NAME)hii.rc -g $(MODULE_GUID) --hiipackage $(HII_BINARY_PACKAGES) $(GENFW_FLAGS)
    654         "$(RC)" /Fo${dst} $(OUTPUT_DIR)(+)$(MODULE_NAME)hii.rc
    655 
    656     <Command.GCC, Command.GCCLD>
    657         "$(GENFW)" -o $(OUTPUT_DIR)(+)$(MODULE_NAME)hii.rc -g $(MODULE_GUID) --hiibinpackage $(HII_BINARY_PACKAGES) $(GENFW_FLAGS)
    658         "$(RC)" $(RC_FLAGS) $(OUTPUT_DIR)(+)$(MODULE_NAME)hii.rc ${dst}
    659         
    660     <Command.XCODE, Command.RVCT>
    661         GenFw -o $(OUTPUT_DIR)(+)$(MODULE_NAME)hii.rc -g $(MODULE_GUID) --hiibinpackage $(HII_BINARY_PACKAGES)
    662         
    663         
    664