7e5d4aa0377564d3bbedce525b37b6adaec6e67c
[efi/edk2/.git] / edk2 / BaseTools / 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)" --only-keep-debug ${dst} $(DEBUG_DIR)(+)$(MODULE_NAME).pdb\r
241         "$(OBJCOPY)" -S ${dst}\r
242         "$(OBJCOPY)" $(OBJCOPY_FLAGS) ${dst}\r
243 \r
244     <Command.RVCT>\r
245         "$(DLINK)" $(DLINK_FLAGS) -o ${dst} $(DLINK_SPATH) --via $(STATIC_LIBRARY_FILES_LIST) $(DLINK2_FLAGS)\r
246 \r
247     <Command.RVCTCYGWIN>\r
248         #$(STATIC_LIBRARY_FILES_LIST) has wrong paths for cygwin\r
249         "$(DLINK)" $(DLINK_FLAGS) -o ${dst} $(DLINK_SPATH) $(STATIC_LIBRARY_FILES) $(DLINK2_FLAGS)\r
250 \r
251     <Command.XCODE>\r
252         "$(DLINK)" $(DLINK_FLAGS) -o ${dst} $(DLINK_SPATH) -filelist $(STATIC_LIBRARY_FILES_LIST)  $(DLINK2_FLAGS)\r
253     \r
254     \r
255 [Static-Library-File.USER_DEFINED]\r
256     <InputFile>\r
257         *.lib\r
258 \r
259     <ExtraDependency>\r
260         $(MAKE_FILE)\r
261 \r
262     <OutputFile>\r
263         $(DEBUG_DIR)(+)$(MODULE_NAME)\r
264 \r
265     <Command.MSFT, Command.INTEL>\r
266         "$(DLINK)" $(DLINK_FLAGS) $(DLINK_SPATH) @$(STATIC_LIBRARY_FILES_LIST)\r
267 \r
268     <Command.GCC>\r
269         "$(DLINK)" $(DLINK_FLAGS) -\( $(DLINK_SPATH) @$(STATIC_LIBRARY_FILES_LIST) -\) $(DLINK2_FLAGS)\r
270 \r
271     <Command.RVCT>\r
272         "$(DLINK)" $(DLINK_FLAGS) -o ${dst} $(DLINK_SPATH) --via $(STATIC_LIBRARY_FILES_LIST) $(DLINK2_FLAGS)\r
273 \r
274     <Command.RVCTCYGWIN>\r
275         #$(STATIC_LIBRARY_FILES_LIST) has the wrong paths for cygwin\r
276         "$(DLINK)" $(DLINK_FLAGS) -o ${dst} $(DLINK_SPATH) $(STATIC_LIBRARY_FILES) $(DLINK2_FLAGS)\r
277 \r
278     <Command.XCODE>\r
279         "$(DLINK)" -o ${dst} $(DLINK_FLAGS)  $(DLINK_SPATH) -filelist $(STATIC_LIBRARY_FILES_LIST)  $(DLINK2_FLAGS)\r
280       \r
281       \r
282 [Dynamic-Library-File]\r
283     <InputFile>\r
284         ?.dll\r
285 \r
286     <OutputFile>\r
287         $(DEBUG_DIR)(+)$(MODULE_NAME).efi\r
288 \r
289     <Command.MSFT, Command.INTEL, Command.GCC, Command.RVCT>      \r
290         GenFw -e $(MODULE_TYPE) -o ${dst} ${src}\r
291         $(CP) ${dst} $(OUTPUT_DIR)\r
292         $(CP) ${dst} $(BIN_DIR)\r
293         -$(CP) $(DEBUG_DIR)(+)*.map $(OUTPUT_DIR)\r
294         \r
295     <Command.XCODE>\r
296         # tool to convert Mach-O to PE/COFF\r
297         "$(MTOC)" -subsystem $(MODULE_TYPE)  $(MTOC_FLAGS)  ${src}  $(DEBUG_DIR)(+)$(MODULE_NAME).pecoff\r
298         # create symbol file for GDB debug\r
299         -$(DSYMUTIL) ${src}\r
300         GenFw -e $(MODULE_TYPE) -o ${dst} $(DEBUG_DIR)(+)$(MODULE_NAME).pecoff \r
301         $(CP) ${dst} $(OUTPUT_DIR)\r
302         $(CP) ${dst} $(BIN_DIR)\r
303         -$(CP) $(DEBUG_DIR)(+)*.map $(OUTPUT_DIR)\r
304 \r
305 [Dependency-Expression-File]\r
306     <InputFile>\r
307         ?.dxs, ?.Dxs, ?.DXS\r
308 \r
309     <OutputFile>\r
310         $(OUTPUT_DIR)(+)$(MODULE_NAME).depex\r
311 \r
312     <Command>\r
313         "$(PP)" $(CC_FLAGS) $(APP_FLAGS) $(INC) ${src} > $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.i\r
314         Trim --source-code -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.iii $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.i\r
315         GenDepex -t $(MODULE_TYPE) -o ${dst} $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.iii\r
316 \r
317 [Acpi-Source-Language-File]\r
318     <InputFile>\r
319         ?.asl, ?.Asl, ?.ASL\r
320 \r
321     <OutputFile>\r
322         $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.aml\r
323 \r
324     <ExtraDependency>\r
325         $(MAKE_FILE)\r
326 \r
327     <Command.MSFT, Command.INTEL>\r
328         Trim --asl-file -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.i ${src}\r
329         "$(ASLPP)" $(ASLPP_FLAGS) $(INC) /I${s_path} $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.i > $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.iii\r
330         "$(ASL)" $(ASL_FLAGS) $(ASL_OUTFLAGS)${dst} $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.iii\r
331 \r
332     <Command.GCC>\r
333         Trim --asl-file -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.i ${src}\r
334         "$(ASLPP)" $(ASLPP_FLAGS) $(INC) -I${s_path} $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.i > $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.iii\r
335         "$(ASL)" $(ASL_FLAGS) $(ASL_OUTFLAGS)${dst} $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.iii\r
336 \r
337 [C-Code-File.AcpiTable]\r
338     <InputFile>\r
339         ?.c\r
340 \r
341     <OutputFile>\r
342         $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.acpi\r
343 \r
344     <ExtraDependency>\r
345         $(MAKE_FILE)\r
346 \r
347     <Command.MSFT, Command.INTEL>\r
348         "$(ASLCC)" /Fo$(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj $(CC_FLAGS) $(ASLCC_FLAGS) $(INC) ${src}\r
349         "$(ASLDLINK)" /OUT:$(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dll $(ASLDLINK_FLAGS) $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj\r
350         GenFw -o ${dst} -c $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dll\r
351 \r
352     <Command.GCC>\r
353         "$(ASLCC)" -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj $(CC_FLAGS) $(ASLCC_FLAGS) $(INC) ${src}\r
354         "$(ASLDLINK)" -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dll $(ASLDLINK_FLAGS) $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj\r
355         GenFw -o ${dst} -c $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dll\r
356 \r
357 [Acpi-Table-Code-File]\r
358     <InputFile>\r
359         ?.aslc, ?.act\r
360 \r
361     <OutputFile>\r
362         $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.acpi\r
363 \r
364     <ExtraDependency>\r
365         $(MAKE_FILE)\r
366 \r
367     <Command.MSFT, Command.INTEL>\r
368         "$(ASLCC)" /Fo$(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj $(CC_FLAGS) $(ASLCC_FLAGS) $(INC) ${src}\r
369         "$(ASLDLINK)" /OUT:$(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dll $(ASLDLINK_FLAGS) $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj\r
370         GenFw -o ${dst} -c $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dll\r
371 \r
372     <Command.GCC>\r
373         "$(ASLCC)" -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj $(CC_FLAGS) $(ASLCC_FLAGS) $(INC) ${src}\r
374         "$(ASLDLINK)" -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dll $(ASLDLINK_FLAGS) $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj\r
375         GenFw -o ${dst} -c $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dll\r
376         \r
377     <Command.XCODE>        \r
378         "$(ASLCC)" -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj  $(ASLCC_FLAGS) $(INC) ${src}\r
379         "$(ASLDLINK)" -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dll $(ASLDLINK_FLAGS) $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj\r
380         "$(MTOC)" -subsystem $(MODULE_TYPE)  $(MTOC_FLAGS) $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dll $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.efi\r
381         GenFw -o ${dst} -c $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.efi\r
382       \r
383       \r
384 [Masm16-Code-File]\r
385     <InputFile>\r
386         ?.asm16, ?.Asm16, ?.ASM16\r
387 \r
388     <ExtraDependency>\r
389         $(MAKE_FILE)\r
390 \r
391     <OutputFile>\r
392         $(OUTPUT_DIR)(+)${s_base}.com\r
393 \r
394     <Command.MSFT, Command.INTEL>\r
395         cd $(OUTPUT_DIR)(+)${s_dir}\r
396         "$(ASM)" /nologo /c /omf /Fo$(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj ${src}\r
397         "$(ASMLINK)" $(ASMLINK_FLAGS) $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj,${dst},,,,\r
398 \r
399     <Command.GCC>\r
400       "$(PP)" $(PP_FLAGS) $(INC) ${src} > ${d_path}(+)${s_base}.i\r
401       Trim --source-code -o ${d_path}(+)${s_base}.iii ${d_path}(+)${s_base}.i\r
402       "$(ASM)" -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj $(ASM_FLAGS) $(INC) ${d_path}(+)${s_base}.iii\r
403       "$(DLINK)" -o ${dst} $(DLINK_FLAGS) -( $(DLINK_SPATH) $(LIBS) $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj -)\r
404      \r
405     <Command.XCODE>\r
406       "$(PP)" $(PP_FLAGS) $(INC) ${src} > ${d_path}(+)${s_base}.i\r
407       Trim --source-code -o ${d_path}(+)${s_base}.iii ${d_path}(+)${s_base}.i\r
408       "$(ASM)" -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj $(ASM_FLAGS) $(INC) ${d_path}(+)${s_base}.iii\r
409       "$(SLINK)" $(SLINK_FLAGS) $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.slib $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj\r
410       otool -t $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.slib | hex2bin.py ${dst}\r
411       \r
412 \r
413 [Microcode-File.USER_DEFINED, Microcode-File.Microcode]\r
414     <InputFile>\r
415         ?.txt, ?.TXT, ?.Txt, ?.mut, ?.inc\r
416 \r
417     <OutputFile>\r
418         $(OUTPUT_DIR)(+)${s_base}.mcb\r
419 \r
420     <Command>\r
421         GenFw -o ${dst} -m ${src}\r
422 \r
423 [Microcode-Binary-File]\r
424     <InputFile>\r
425         *.mcb\r
426 \r
427     <OutputFile>\r
428         $(OUTPUT_DIR)(+)$(MODULE_NAME).bin\r
429 \r
430     <Command>\r
431         GenFw -o ${dst} -j $(MICROCODE_BINARY_FILES)\r
432         -$(CP) ${dst} $(BIN_DIR)\r
433 \r
434 [EFI-Image-File]\r
435     <InputFile>\r
436         ?.efi, ?.Efi, ?.EFI\r
437 \r
438     <OutputFile>\r
439 \r
440     <Command>\r
441 \r
442 [Unicode-Text-File]\r
443     <InputFile>\r
444         *.uni, *.Uni, *.UNI\r
445 \r
446     <OutputFile>\r
447         $(DEBUG_DIR)(+)AutoGen.c\r
448         $(DEBUG_DIR)(+)$(MODULE_NAME)StrDefs.h\r
449 \r
450     <Command>\r
451 \r
452 [Efi-Image.UEFI_OPTIONROM]\r
453     <InputFile>\r
454         ?.efi, ?.EFI, ?.Efi\r
455 \r
456     <OutputFile>\r
457         $(BIN_DIR)(+)$(MODULE_NAME).rom\r
458 \r
459     <Command>\r
460         $(OPTROM) -i $(PCI_DEVICE_ID) -f $(PCI_VENDOR_ID) -l $(PCI_CLASS_CODE) -r $(PCI_REVISION) -o $dst $(OPTROM_FLAGS) $src\r
461 \r
462 [Unicode-Text-File.UEFI_HII]\r
463     <InputFile>\r
464         *.uni, *.Uni, *.UNI\r
465 \r
466     <OutputFile>\r
467         $(OUTPUT_DIR)(+)$(MODULE_NAME)StrDefs.hpk\r
468         $(DEBUG_DIR)(+)$(MODULE_NAME)StrDefs.h\r
469 \r
470     <Command>\r
471 \r
472 [Visual-Form-Representation-File.UEFI_HII]\r
473     <InputFile>\r
474         ?.vfr\r
475         ?.Vfr\r
476         ?.VFR\r
477 \r
478     <ExtraDependency>\r
479         $(MAKE_FILE)\r
480 \r
481     <OutputFile>\r
482         $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.hpk\r
483 \r
484     <Command>\r
485         -$(MD) $(OUTPUT_DIR)(+)${s_dir} > NUL 2>&1\r
486         "$(VFRPP)" $(VFRPP_FLAGS) $(INC) ${src} > $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.i\r
487         -$(MD) $(OUTPUT_DIR)(+)${s_dir} > NUL 2>&1\r
488         "$(VFR)" $(VFR_FLAGS) --create-ifr-package --output-directory $(OUTPUT_DIR)(+)${s_dir} $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.i\r
489 \r
490 [Hii-Binary-Package.UEFI_HII]\r
491     <InputFile>\r
492         *.hpk\r
493 \r
494     <OutputFile>\r
495         $(OUTPUT_DIR)(+)$(MODULE_NAME)hii.lib\r
496 \r
497     <Command.MSFT, Command.INTEL>\r
498         GenFw -o $(OUTPUT_DIR)(+)$(MODULE_NAME)hii.rc -g $(MODULE_GUID) --hiipackage $(HII_BINARY_PACKAGES)\r
499         "$(RC)" /Fo${dst} $(OUTPUT_DIR)(+)$(MODULE_NAME)hii.rc\r
500 \r
501     <Command.GCC>\r
502         GenFw -o $(OUTPUT_DIR)(+)$(MODULE_NAME)hii.rc -g $(MODULE_GUID) --hiibinpackage $(HII_BINARY_PACKAGES)\r
503         "$(RC)" $(RC_FLAGS) $(OUTPUT_DIR)(+)$(MODULE_NAME)hii.rc ${dst}\r