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