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