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