Fix a bug to identify all installed PPIs
[efi/basetools/.git] / 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     <Command.ARMGCC>\r
135         "$(CC)" $(CC_FLAGS) -o ${dst} $(INC) ${src}\r
136 \r
137 \r
138 [C-Header-File]\r
139     <InputFile>\r
140         *.h, *.H\r
141 \r
142     <OutputFile>\r
143 \r
144     <Command>\r
145 \r
146 \r
147 [Assembly-Code-File.COMMON.COMMON]\r
148     <InputFile.MSFT, InputFile.INTEL, InputFile.RVCT>\r
149         ?.asm, ?.Asm, ?.ASM\r
150 \r
151     <InputFile.GCC>\r
152         ?.S, ?.s\r
153 \r
154     <ExtraDependency>\r
155         $(MAKE_FILE)\r
156 \r
157     <OutputFile>\r
158         $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj\r
159 \r
160     <Command.MSFT, Command.INTEL>\r
161         "$(PP)" $(PP_FLAGS) $(INC) ${src} > ${d_path}(+)${s_base}.i\r
162         Trim --source-code --convert-hex -o ${d_path}(+)${s_base}.iii ${d_path}(+)${s_base}.i\r
163         "$(ASM)" /Fo${dst} $(ASM_FLAGS) /I${s_path} $(INC) ${d_path}(+)${s_base}.iii\r
164 \r
165     <Command.GCC, Command.RVCT>\r
166         "$(PP)" $(PP_FLAGS) $(INC) ${src} > ${d_path}(+)${s_base}.i\r
167         Trim --source-code -o ${d_path}(+)${s_base}.iii ${d_path}(+)${s_base}.i\r
168         # For RVCTCYGWIN ASM_FLAGS must be first to work around pathing issues\r
169         "$(ASM)" $(ASM_FLAGS) -o ${dst} $(INC) ${d_path}(+)${s_base}.iii\r
170 \r
171 [Assembly-Code-File.COMMON.IPF]\r
172     <InputFile>\r
173         ?.s\r
174 \r
175     <ExtraDependency>\r
176         $(MAKE_FILE)\r
177 \r
178     <OutputFile>\r
179         $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj\r
180 \r
181     <Command.MSFT, Command.INTEL>\r
182         "$(PP)" $(PP_FLAGS) $(INC) ${src} > ${d_path}(+)${s_base}.i\r
183         Trim --source-code -o ${d_path}(+)${s_base}.iii ${d_path}(+)${s_base}.i\r
184         # For RVCTCYGWIN ASM_FLAGS must be first to work around pathing issues\r
185         "$(ASM)" $(ASM_FLAGS) -o ${dst} ${d_path}(+)${s_base}.iii\r
186 \r
187 [Visual-Form-Representation-File]\r
188     <InputFile>\r
189         ?.vfr\r
190         ?.Vfr\r
191         ?.VFR\r
192 \r
193     <ExtraDependency>\r
194         $(MAKE_FILE)\r
195 \r
196     <OutputFile>\r
197         $(DEBUG_DIR)(+)${s_dir}(+)${s_base}.c\r
198 \r
199     <Command>\r
200         -$(MD) $(OUTPUT_DIR)(+)${s_dir} > NUL 2>&1\r
201         "$(VFRPP)" $(VFRPP_FLAGS) $(INC) ${src} > $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.i\r
202         -$(MD) ${d_path} > NUL 2>&1\r
203         "$(VFR)" $(VFR_FLAGS) --output-directory ${d_path} $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.i\r
204 \r
205 [Object-File]\r
206     <InputFile>\r
207         *.obj\r
208         *.o\r
209 \r
210     <OutputFile>\r
211         $(OUTPUT_DIR)(+)$(MODULE_NAME).lib\r
212 \r
213     <Command.MSFT, Command.INTEL>\r
214         "$(SLINK)" $(SLINK_FLAGS) /OUT:${dst} @$(OBJECT_FILES_LIST)\r
215 \r
216     <Command.GCC>\r
217         "$(SLINK)" -cr ${dst} $(SLINK_FLAGS) @$(OBJECT_FILES_LIST)\r
218     \r
219     <Command.RVCT>\r
220         "$(SLINK)" $(SLINK_FLAGS) ${dst} --via $(OBJECT_FILES_LIST)\r
221     \r
222     <Command.RVCTCYGWIN, Command.ARMGCC>\r
223         # $(OBJECT_FILES_LIST) has wrong paths for cygwin\r
224         "$(SLINK)" $(SLINK_FLAGS) ${dst} $(OBJECT_FILES)\r
225 \r
226     <Command.XCODE>\r
227         "$(SLINK)" $(SLINK_FLAGS) ${dst} -filelist $(OBJECT_FILES_LIST)\r
228 \r
229 [Static-Library-File]\r
230     <InputFile>\r
231         *.lib\r
232 \r
233     <ExtraDependency>\r
234         $(MAKE_FILE)\r
235 \r
236     <OutputFile>\r
237         $(DEBUG_DIR)(+)$(MODULE_NAME).dll\r
238 \r
239     <Command.MSFT, Command.INTEL>\r
240         "$(DLINK)" /OUT:${dst} $(DLINK_FLAGS) $(DLINK_SPATH) @$(STATIC_LIBRARY_FILES_LIST)\r
241 \r
242     <Command.GCC>\r
243         "$(DLINK)" -o ${dst} $(DLINK_FLAGS) -\( $(DLINK_SPATH) @$(STATIC_LIBRARY_FILES_LIST) -\) $(DLINK2_FLAGS)\r
244         "$(OBJCOPY)" $(OBJCOPY_FLAGS) ${dst}\r
245 \r
246     <Command.ARMGCC>\r
247         "$(DLINK)" -o ${dst} $(DLINK_FLAGS) -( $(DLINK_SPATH) $(STATIC_LIBRARY_FILES) -) $(DLINK2_FLAGS)\r
248 \r
249     <Command.RVCT>\r
250         "$(DLINK)" $(DLINK_FLAGS) -o ${dst} $(DLINK_SPATH) --via $(STATIC_LIBRARY_FILES_LIST) $(DLINK2_FLAGS)\r
251 \r
252     <Command.RVCTCYGWIN>\r
253         #$(STATIC_LIBRARY_FILES_LIST) has wrong paths for cygwin\r
254         "$(DLINK)" $(DLINK_FLAGS) -o ${dst} $(DLINK_SPATH) $(STATIC_LIBRARY_FILES) $(DLINK2_FLAGS)\r
255 \r
256     <Command.XCODE>\r
257         "$(DLINK)" $(DLINK_FLAGS) -o ${dst} $(DLINK_SPATH) -filelist $(STATIC_LIBRARY_FILES_LIST)  $(DLINK2_FLAGS)\r
258     \r
259     \r
260 [Static-Library-File.USER_DEFINED]\r
261     <InputFile>\r
262         *.lib\r
263 \r
264     <ExtraDependency>\r
265         $(MAKE_FILE)\r
266 \r
267     <OutputFile>\r
268         $(DEBUG_DIR)(+)$(MODULE_NAME)\r
269 \r
270     <Command.MSFT, Command.INTEL>\r
271         "$(DLINK)" $(DLINK_FLAGS) $(DLINK_SPATH) @$(STATIC_LIBRARY_FILES_LIST)\r
272 \r
273     <Command.GCC>\r
274         "$(DLINK)" $(DLINK_FLAGS) -\( $(DLINK_SPATH) @$(STATIC_LIBRARY_FILES_LIST) -\) $(DLINK2_FLAGS)\r
275 \r
276     <Command.ARMGCC>\r
277         "$(DLINK)" $(DLINK_FLAGS) -( $(DLINK_SPATH) $(STATIC_LIBRARY_FILES) -) $(DLINK2_FLAGS)\r
278 \r
279     <Command.RVCT>\r
280         "$(DLINK)" $(DLINK_FLAGS) -o ${dst} $(DLINK_SPATH) --via $(STATIC_LIBRARY_FILES_LIST) $(DLINK2_FLAGS)\r
281 \r
282     <Command.RVCTCYGWIN>\r
283         #$(STATIC_LIBRARY_FILES_LIST) has the wrong paths for cygwin\r
284         "$(DLINK)" $(DLINK_FLAGS) -o ${dst} $(DLINK_SPATH) $(STATIC_LIBRARY_FILES) $(DLINK2_FLAGS)\r
285 \r
286     <Command.XCODE>\r
287         "$(DLINK)" -o ${dst} $(DLINK_FLAGS)  $(DLINK_SPATH) -filelist $(STATIC_LIBRARY_FILES_LIST)  $(DLINK2_FLAGS)\r
288       \r
289       \r
290 [Dynamic-Library-File]\r
291     <InputFile>\r
292         ?.dll\r
293 \r
294     <OutputFile>\r
295         $(DEBUG_DIR)(+)$(MODULE_NAME).efi\r
296 \r
297     <Command.MSFT, Command.INTEL, Command.RVCT, Command.ARMGCC>  \r
298         GenFw -e $(MODULE_TYPE) -o ${dst} ${src}\r
299         $(CP) ${dst} $(OUTPUT_DIR)\r
300         $(CP) ${dst} $(BIN_DIR)\r
301         -$(CP) $(DEBUG_DIR)(+)*.map $(OUTPUT_DIR)\r
302 \r
303     <Command.GCC>\r
304         $(OBJCOPY) --only-keep-debug ${src} $(BIN_DIR)(+)$(MODULE_NAME).debug\r
305         $(OBJCOPY) --strip-unneeded ${src}\r
306         $(OBJCOPY) --add-gnu-debuglink=$(BIN_DIR)(+)$(MODULE_NAME).debug ${src}\r
307         GenFw -e $(MODULE_TYPE) -o ${dst} ${src}\r
308         $(CP) ${dst} $(OUTPUT_DIR)\r
309         $(CP) ${dst} $(BIN_DIR)\r
310         -$(CP) $(DEBUG_DIR)(+)*.map $(OUTPUT_DIR)\r
311         \r
312     <Command.XCODE>\r
313         # tool to convert Mach-O to PE/COFF\r
314         "$(MTOC)" -subsystem $(MODULE_TYPE)  $(MTOC_FLAGS)  ${src}  $(DEBUG_DIR)(+)$(MODULE_NAME).pecoff\r
315         # create symbol file for GDB debug\r
316         -$(DSYMUTIL) ${src}\r
317         GenFw -e $(MODULE_TYPE) -o ${dst} $(DEBUG_DIR)(+)$(MODULE_NAME).pecoff \r
318         $(CP) ${dst} $(OUTPUT_DIR)\r
319         $(CP) ${dst} $(BIN_DIR)\r
320         -$(CP) $(DEBUG_DIR)(+)*.map $(OUTPUT_DIR)\r
321 \r
322 [Dependency-Expression-File]\r
323     <InputFile>\r
324         ?.dxs, ?.Dxs, ?.DXS\r
325 \r
326     <OutputFile>\r
327         $(OUTPUT_DIR)(+)$(MODULE_NAME).depex\r
328 \r
329     <Command>\r
330         "$(PP)" $(CC_FLAGS) $(APP_FLAGS) $(INC) ${src} > $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.i\r
331         Trim --source-code -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.iii $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.i\r
332         GenDepex -t $(MODULE_TYPE) -o ${dst} $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.iii\r
333 \r
334 [Acpi-Source-Language-File]\r
335     <InputFile>\r
336         ?.asl, ?.Asl, ?.ASL\r
337 \r
338     <OutputFile>\r
339         $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.aml\r
340 \r
341     <ExtraDependency>\r
342         $(MAKE_FILE)\r
343 \r
344     <Command.MSFT, Command.INTEL>\r
345         Trim --asl-file -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.i ${src}\r
346         "$(ASLPP)" $(ASLPP_FLAGS) $(INC) /I${s_path} $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.i > $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.iii\r
347         "$(ASL)" $(ASL_FLAGS) $(ASL_OUTFLAGS)${dst} $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.iii\r
348 \r
349     <Command.GCC>\r
350         Trim --asl-file -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.i ${src}\r
351         "$(ASLPP)" $(ASLPP_FLAGS) $(INC) -I${s_path} $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.i > $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.iii\r
352         "$(ASL)" $(ASL_FLAGS) $(ASL_OUTFLAGS)${dst} $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.iii\r
353 \r
354 [C-Code-File.AcpiTable]\r
355     <InputFile>\r
356         ?.c\r
357 \r
358     <OutputFile>\r
359         $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.acpi\r
360 \r
361     <ExtraDependency>\r
362         $(MAKE_FILE)\r
363 \r
364     <Command.MSFT, Command.INTEL>\r
365         "$(ASLCC)" /Fo$(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj $(CC_FLAGS) $(ASLCC_FLAGS) $(INC) ${src}\r
366         "$(ASLDLINK)" /OUT:$(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dll $(ASLDLINK_FLAGS) $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj\r
367         GenFw -o ${dst} -c $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dll\r
368 \r
369     <Command.GCC>\r
370         "$(ASLCC)" -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj $(CC_FLAGS) $(ASLCC_FLAGS) $(INC) ${src}\r
371         "$(ASLDLINK)" -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dll $(ASLDLINK_FLAGS) $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj\r
372         GenFw -o ${dst} -c $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dll\r
373 \r
374 [Acpi-Table-Code-File]\r
375     <InputFile>\r
376         ?.aslc, ?.act\r
377 \r
378     <OutputFile>\r
379         $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.acpi\r
380 \r
381     <ExtraDependency>\r
382         $(MAKE_FILE)\r
383 \r
384     <Command.MSFT, Command.INTEL>\r
385         "$(ASLCC)" /Fo$(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj $(CC_FLAGS) $(ASLCC_FLAGS) $(INC) ${src}\r
386         "$(ASLDLINK)" /OUT:$(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dll $(ASLDLINK_FLAGS) $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj\r
387         GenFw -o ${dst} -c $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dll\r
388 \r
389     <Command.GCC>\r
390         "$(ASLCC)" -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj $(CC_FLAGS) $(ASLCC_FLAGS) $(INC) ${src}\r
391         "$(ASLDLINK)" -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dll $(ASLDLINK_FLAGS) $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj\r
392         GenFw -o ${dst} -c $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dll\r
393         \r
394     <Command.XCODE>        \r
395         "$(ASLCC)" -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj  $(ASLCC_FLAGS) $(INC) ${src}\r
396         "$(ASLDLINK)" -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dll $(ASLDLINK_FLAGS) $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj\r
397         "$(MTOC)" -subsystem $(MODULE_TYPE)  $(MTOC_FLAGS) $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dll $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.efi\r
398         GenFw -o ${dst} -c $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.efi\r
399       \r
400       \r
401 [Masm16-Code-File]\r
402     <InputFile>\r
403         ?.asm16, ?.Asm16, ?.ASM16\r
404 \r
405     <ExtraDependency>\r
406         $(MAKE_FILE)\r
407 \r
408     <OutputFile>\r
409         $(OUTPUT_DIR)(+)${s_base}.com\r
410 \r
411     <Command.MSFT, Command.INTEL>\r
412         cd $(OUTPUT_DIR)(+)${s_dir}\r
413         "$(ASM)" /nologo /c /omf /Fo$(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj ${src}\r
414         "$(ASMLINK)" $(ASMLINK_FLAGS) $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj,${dst},,,,\r
415 \r
416     <Command.GCC>\r
417       "$(PP)" $(PP_FLAGS) $(INC) ${src} > ${d_path}(+)${s_base}.i\r
418       Trim --source-code -o ${d_path}(+)${s_base}.iii ${d_path}(+)${s_base}.i\r
419       "$(ASM)" -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj $(ASM_FLAGS) $(INC) ${d_path}(+)${s_base}.iii\r
420       "$(DLINK)" -o ${dst} $(DLINK_FLAGS) -( $(DLINK_SPATH) $(LIBS) $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj -)\r
421      \r
422     <Command.XCODE>\r
423       "$(PP)" $(PP_FLAGS) $(INC) ${src} > ${d_path}(+)${s_base}.i\r
424       Trim --source-code -o ${d_path}(+)${s_base}.iii ${d_path}(+)${s_base}.i\r
425       "$(ASM)" -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj $(ASM_FLAGS) $(INC) ${d_path}(+)${s_base}.iii\r
426       "$(SLINK)" $(SLINK_FLAGS) $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.slib $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj\r
427       otool -t $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.slib | hex2bin.py ${dst}\r
428       \r
429 \r
430 [Microcode-File.USER_DEFINED, Microcode-File.Microcode]\r
431     <InputFile>\r
432         ?.txt, ?.TXT, ?.Txt, ?.mut, ?.inc\r
433 \r
434     <OutputFile>\r
435         $(OUTPUT_DIR)(+)${s_base}.mcb\r
436 \r
437     <Command>\r
438         GenFw -o ${dst} -m ${src}\r
439 \r
440 [Microcode-Binary-File]\r
441     <InputFile>\r
442         *.mcb\r
443 \r
444     <ExtraDependency>\r
445         $(MAKE_FILE)\r
446 \r
447     <OutputFile>\r
448         $(OUTPUT_DIR)(+)$(MODULE_NAME).bin\r
449 \r
450     <Command>\r
451         GenFw -o ${dst} -j $(MICROCODE_BINARY_FILES)\r
452         -$(CP) ${dst} $(BIN_DIR)\r
453 \r
454 [EFI-Image-File]\r
455     <InputFile>\r
456         ?.efi, ?.Efi, ?.EFI\r
457 \r
458     <OutputFile>\r
459 \r
460     <Command>\r
461 \r
462 [Unicode-Text-File]\r
463     <InputFile>\r
464         *.uni, *.Uni, *.UNI\r
465 \r
466     <OutputFile>\r
467         $(DEBUG_DIR)(+)AutoGen.c\r
468         $(DEBUG_DIR)(+)$(MODULE_NAME)StrDefs.h\r
469 \r
470     <Command>\r
471 \r
472 [Efi-Image.UEFI_OPTIONROM]\r
473     <InputFile>\r
474         ?.efi, ?.EFI, ?.Efi\r
475 \r
476     <OutputFile>\r
477         $(BIN_DIR)(+)$(MODULE_NAME).rom\r
478 \r
479     <Command>\r
480         $(OPTROM) -i $(PCI_DEVICE_ID) -f $(PCI_VENDOR_ID) -l $(PCI_CLASS_CODE) -r $(PCI_REVISION) -o $dst $(OPTROM_FLAGS) $src\r
481 \r
482 [Unicode-Text-File.UEFI_HII]\r
483     <InputFile>\r
484         *.uni, *.Uni, *.UNI\r
485 \r
486     <OutputFile>\r
487         $(OUTPUT_DIR)(+)$(MODULE_NAME)StrDefs.hpk\r
488         $(DEBUG_DIR)(+)$(MODULE_NAME)StrDefs.h\r
489 \r
490     <Command>\r
491 \r
492 [Visual-Form-Representation-File.UEFI_HII]\r
493     <InputFile>\r
494         ?.vfr\r
495         ?.Vfr\r
496         ?.VFR\r
497 \r
498     <ExtraDependency>\r
499         $(MAKE_FILE)\r
500 \r
501     <OutputFile>\r
502         $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.hpk\r
503 \r
504     <Command>\r
505         -$(MD) $(OUTPUT_DIR)(+)${s_dir} > NUL 2>&1\r
506         "$(VFRPP)" $(VFRPP_FLAGS) $(INC) ${src} > $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.i\r
507         -$(MD) $(OUTPUT_DIR)(+)${s_dir} > NUL 2>&1\r
508         "$(VFR)" $(VFR_FLAGS) --create-ifr-package --output-directory $(OUTPUT_DIR)(+)${s_dir} $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.i\r
509 \r
510 [Hii-Binary-Package.UEFI_HII]\r
511     <InputFile>\r
512         *.hpk\r
513 \r
514     <OutputFile>\r
515         $(OUTPUT_DIR)(+)$(MODULE_NAME)hii.lib\r
516 \r
517     <Command.MSFT, Command.INTEL>\r
518         GenFw -o $(OUTPUT_DIR)(+)$(MODULE_NAME)hii.rc -g $(MODULE_GUID) --hiipackage $(HII_BINARY_PACKAGES)\r
519         "$(RC)" /Fo${dst} $(OUTPUT_DIR)(+)$(MODULE_NAME)hii.rc\r
520 \r
521     <Command.GCC>\r
522         GenFw -o $(OUTPUT_DIR)(+)$(MODULE_NAME)hii.rc -g $(MODULE_GUID) --hiibinpackage $(HII_BINARY_PACKAGES)\r
523         "$(RC)" $(RC_FLAGS) $(OUTPUT_DIR)(+)$(MODULE_NAME)hii.rc ${dst}\r