]> git.proxmox.com Git - mirror_edk2.git/blame_incremental - Tools/Conf/BuildMacro.xml
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@1251 6f19259b...
[mirror_edk2.git] / Tools / Conf / BuildMacro.xml
... / ...
CommitLineData
1<?xml version="1.0" encoding="UTF-8"?>\r
2<!--\r
3Copyright (c) 2006, Intel Corporation\r
4All rights reserved. This program and the accompanying materials\r
5are licensed and made available under the terms and conditions of the BSD License\r
6which accompanies this distribution. The full text of the license may be found at\r
7http://opensource.org/licenses/bsd-license.php\r
8\r
9THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
10WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
11-->\r
12<project name="common">\r
13 <!--\r
14 macro definitions for building files with different types\r
15 -->\r
16 <!--\r
17 C Code\r
18 -->\r
19 <macrodef name="Build_CCode">\r
20 <attribute name="FILEPATH"/>\r
21 <attribute name="FILENAME"/>\r
22 <attribute name="FILEEXT" default="c"/>\r
23 \r
24 <element name="EXTRA.INC" optional="yes"/>\r
25 <element name="EXTRA.ARG" optional="yes"/>\r
26 \r
27 <sequential>\r
28 <var name="FILE_BASENAME" value="@{FILENAME}" />\r
29 <var name="FILE_PATH" value="@{FILEPATH}" />\r
30 <mkdir dir="${DEST_DIR_OUTPUT}/@{FILEPATH}"/>\r
31\r
32 <if>\r
33 <available type="file" file="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj"/>\r
34 <then>\r
35 <makedeps DepsFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}.dep">\r
36 <input file="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>\r
37 <input file="${DEST_DIR_DEBUG}/AutoGen.h"/>\r
38 <EXTRA.INC/>\r
39 </makedeps>\r
40 </then>\r
41 </if>\r
42\r
43 <OnDependency>\r
44 <sourcefiles>\r
45 <file ListFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}.dep"/>\r
46 </sourcefiles>\r
47 <targetfiles>\r
48 <file Name="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj"/>\r
49 </targetfiles>\r
50\r
51 <sequential>\r
52 <cc userdefine="on">\r
53 <command type="CC" cmd="${CC}" workdir="${DEST_DIR_OUTPUT}" family="${CC_FAMILY}"\r
54 outputFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj">\r
55 <EXTRA.INC/>\r
56 <argument value="${CC_FLAGS}"/>\r
57 <EXTRA.ARG/>\r
58 <fileset casesensitive="on" file="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>\r
59 </command>\r
60 </cc>\r
61 </sequential>\r
62 </OnDependency>\r
63 </sequential>\r
64 </macrodef>\r
65\r
66\r
67 <macrodef name="Build_AUTOGEN">\r
68 <attribute name="FILEPATH"/>\r
69 <attribute name="FILENAME"/>\r
70 <attribute name="FILEEXT" default="c"/>\r
71\r
72 <element name="EXTRA.INC" optional="yes"/>\r
73 <element name="EXTRA.ARG" optional="yes"/>\r
74\r
75 <sequential>\r
76 <var name="FILE_BASENAME" value="@{FILENAME}" />\r
77 <var name="FILE_PATH" value="@{FILEPATH}" />\r
78 <mkdir dir="${DEST_DIR_OUTPUT}/@{FILEPATH}"/>\r
79\r
80 <if>\r
81 <available type="file" file="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj"/>\r
82 <then>\r
83 <makedeps DepsFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}.dep">\r
84 <input file="${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>\r
85 <input file="${DEST_DIR_DEBUG}/AutoGen.h"/>\r
86 <EXTRA.INC/>\r
87 </makedeps>\r
88 </then>\r
89 </if>\r
90\r
91 <OnDependency>\r
92 <sourcefiles>\r
93 <file ListFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}.dep"/>\r
94 </sourcefiles>\r
95 <targetfiles>\r
96 <file Name="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj"/>\r
97 </targetfiles>\r
98\r
99 <sequential>\r
100 <cc userdefine="on">\r
101 <command type="CC" cmd="${CC}" workdir="${DEST_DIR_OUTPUT}" family="${CC_FAMILY}"\r
102 outputFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj">\r
103 <EXTRA.INC/>\r
104 <argument value="${CC_FLAGS}"/>\r
105 <EXTRA.ARG/>\r
106 <fileset casesensitive="on" file="${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>\r
107 </command>\r
108 </cc>\r
109 </sequential>\r
110 </OnDependency>\r
111 </sequential>\r
112 </macrodef>\r
113\r
114 <macrodef name="Build_DPX">\r
115 <attribute name="FILEPATH"/>\r
116 <attribute name="FILENAME"/>\r
117 <attribute name="FILEEXT" default="dxs"/>\r
118\r
119 <element name="EXTRA.INC" optional="yes"/>\r
120 <element name="EXTRA.ARG" optional="yes"/>\r
121 \r
122\r
123 <sequential>\r
124 <var name="FILE_BASENAME" value="@{FILENAME}" />\r
125 <var name="FILE_PATH" value="@{FILEPATH}" />\r
126 <mkdir dir="${DEST_DIR_OUTPUT}/@{FILEPATH}"/>\r
127\r
128 <OnDependency>\r
129 <sourcefiles>\r
130 <file name="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>\r
131 </sourcefiles>\r
132 <targetfiles>\r
133 <file name="${DEST_DIR_OUTPUT}/${BASE_NAME}.depex"/>\r
134 </targetfiles>\r
135\r
136 <sequential>\r
137 <cc userdefine="on">\r
138 <command type="CC" cmd="${CC}" workdir="${DEST_DIR_OUTPUT}/@{FILEPATH}" family="${CC_FAMILY}"\r
139 outputFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.i">\r
140 <EXTRA.INC/>\r
141 <argument value="${PP_FLAGS}"/>\r
142 <fileset casesensitive="on" file="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>\r
143 </command>\r
144 </cc>\r
145 \r
146 <gendepex inputFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.i" outputFile="${DEST_DIR_OUTPUT}/${BASE_NAME}.depex"/>\r
147 </sequential>\r
148 </OnDependency>\r
149 </sequential>\r
150 </macrodef>\r
151 \r
152 <macrodef name="Build_ASM">\r
153 <attribute name="FILEPATH"/>\r
154 <attribute name="FILENAME"/>\r
155 <attribute name="FILEEXT" default="asm"/>\r
156\r
157 <element name="EXTRA.INC" optional="yes"/>\r
158 <element name="EXTRA.ARG" optional="yes"/>\r
159 \r
160 <!-- Dispath ASM file, there are three type. \r
161 asm - Build_Assembly\r
162 S - Build_Gcc_Assembly\r
163 s - Build_Ipf_Assembly -->\r
164 <sequential>\r
165 <if>\r
166 <equals arg1="@{FILEEXT}" arg2="asm" />\r
167 <then>\r
168 <Build_Assembly FILEPATH="@{FILEPATH}" FILENAME="@{FILENAME}" FILEEXT="@{FILEEXT}">\r
169 <EXTRA.INC.1><EXTRA.INC /></EXTRA.INC.1>\r
170 <EXTRA.ARG.1><EXTRA.ARG /></EXTRA.ARG.1>\r
171 </Build_Assembly>\r
172 </then>\r
173 <elseif>\r
174 <equals arg1="@{FILEEXT}" arg2="S" />\r
175 <then>\r
176 <Build_Gcc_Assembly FILEPATH="@{FILEPATH}" FILENAME="@{FILENAME}" FILEEXT="@{FILEEXT}">\r
177 <EXTRA.INC.1><EXTRA.INC /></EXTRA.INC.1>\r
178 <EXTRA.ARG.1><EXTRA.ARG /></EXTRA.ARG.1>\r
179 </Build_Gcc_Assembly>\r
180 </then>\r
181 </elseif>\r
182 <elseif>\r
183 <equals arg1="@{FILEEXT}" arg2="s" />\r
184 <then>\r
185 <Build_IPF_Assembly_Code FILEPATH="@{FILEPATH}" FILENAME="@{FILENAME}" FILEEXT="@{FILEEXT}">\r
186 <EXTRA.INC.1><EXTRA.INC /></EXTRA.INC.1>\r
187 <EXTRA.ARG.1><EXTRA.ARG /></EXTRA.ARG.1>\r
188 </Build_IPF_Assembly_Code>\r
189 </then>\r
190 </elseif>\r
191 </if>\r
192 </sequential>\r
193 </macrodef>\r
194 \r
195 <!--\r
196 IA32/x64 Assembly\r
197 -->\r
198 <macrodef name="Build_Assembly">\r
199 <attribute name="FILEPATH"/>\r
200 <attribute name="FILENAME"/>\r
201 <attribute name="FILEEXT" default="asm"/>\r
202\r
203 <element name="EXTRA.INC.1" optional="yes"/>\r
204 <element name="EXTRA.ARG.1" optional="yes"/>\r
205\r
206 <sequential>\r
207 <var name="FILE_BASENAME" value="@{FILENAME}" />\r
208 <var name="FILE_PATH" value="@{FILEPATH}" />\r
209 <mkdir dir="${DEST_DIR_OUTPUT}/@{FILEPATH}"/>\r
210\r
211 <OnDependency>\r
212 <sourcefiles>\r
213 <file Name="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>\r
214 </sourcefiles>\r
215 <targetfiles>\r
216 <file Name="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj"/>\r
217 </targetfiles>\r
218\r
219 <sequential>\r
220 <cc userdefine="on">\r
221 <command type="PP" cmd="${PP}" workdir="${DEST_DIR_OUTPUT}/@{FILEPATH}" family="${PP_FAMILY}">\r
222 <EXTRA.INC.1/>\r
223 <argument value="${PP_FLAGS}"/>\r
224 <fileset casesensitive="on" file="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>\r
225 </command>\r
226 </cc>\r
227\r
228 <replaceregexp file="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.i"\r
229 match="^(#line +1 +.*@{FILEPATH}/@{FILENAME}\.@{FILEEXT}&quot;).+\1"\r
230 replace=";"\r
231 flags="gs"/>\r
232 <replaceregexp file="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.i"\r
233 match="^(#line .*)$"\r
234 replace="; \1"\r
235 byline="true"/>\r
236 <replaceregexp file="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.i"\r
237 match="([^_a-zA-Z])0x([0-9a-fA-F]+)"\r
238 replace="\10\2h"\r
239 flags="g"\r
240 byline="true"/>\r
241\r
242 <cc userdefine="on">\r
243 <command type="ASM" cmd="${ASM}" workdir="${DEST_DIR_OUTPUT}" family="${ASM_FAMILY}"\r
244 outputFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj">\r
245 <EXTRA.INC.1/>\r
246 \r
247 <argument value="${ASM_FLAGS}"/>\r
248 <EXTRA.ARG.1/>\r
249 \r
250 <fileset casesensitive="on" file="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.i"/>\r
251 </command>\r
252 </cc>\r
253 </sequential>\r
254 </OnDependency>\r
255 </sequential>\r
256 </macrodef>\r
257\r
258 <!--\r
259 Build GCC assembly code\r
260 -->\r
261 <macrodef name="Build_Gcc_Assembly">\r
262 <attribute name="FILEPATH"/>\r
263 <attribute name="FILENAME"/>\r
264 <attribute name="FILEEXT" default="asm"/>\r
265\r
266 <element name="EXTRA.INC.1" optional="yes"/>\r
267 <element name="EXTRA.ARG.1" optional="yes"/>\r
268\r
269 <sequential>\r
270 <var name="FILE_BASENAME" value="@{FILENAME}" />\r
271 <var name="FILE_PATH" value="@{FILEPATH}" />\r
272 <mkdir dir="${DEST_DIR_OUTPUT}/@{FILEPATH}"/>\r
273\r
274 <OnDependency>\r
275 <sourcefiles>\r
276 <file Name="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>\r
277 </sourcefiles>\r
278 <targetfiles>\r
279 <file Name="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj"/>\r
280 </targetfiles>\r
281\r
282 <sequential>\r
283 <cc userdefine="on">\r
284 <command type="ASM" cmd="${ASM}" workdir="${DEST_DIR_OUTPUT}" family="${ASM_FAMILY}"\r
285 outputFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj">\r
286 <EXTRA.INC.1/>\r
287 \r
288 <argument value="${ASM_FLAGS}"/>\r
289 <EXTRA.ARG.1/>\r
290 \r
291 <fileset casesensitive="on" file="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>\r
292 </command>\r
293 </cc>\r
294 </sequential>\r
295 </OnDependency>\r
296 </sequential>\r
297 </macrodef>\r
298\r
299 <!--\r
300 IPF Assembly\r
301 -->\r
302 <macrodef name="Build_IPF_Assembly_Code">\r
303 <attribute name="FILEPATH"/>\r
304 <attribute name="FILENAME"/>\r
305 <attribute name="FILEEXT" default="s"/>\r
306\r
307 <element name="EXTRA.INC.1" optional="yes"/>\r
308 <element name="EXTRA.ARG.1" optional="yes"/>\r
309\r
310 <sequential>\r
311 <mkdir dir="${DEST_DIR_OUTPUT}/@{FILEPATH}"/>\r
312\r
313 <if>\r
314 <available type="file" file="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj"/>\r
315 <then>\r
316 <makedeps DepsFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}.dep">\r
317 <input file="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>\r
318 <EXTRA.INC.1/>\r
319 </makedeps>\r
320 </then>\r
321 </if>\r
322\r
323 <OnDependency>\r
324 <sourcefiles>\r
325 <file listfile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}.dep"/>\r
326 </sourcefiles>\r
327 <targetfiles>\r
328 <file name="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj"/>\r
329 </targetfiles>\r
330\r
331 <sequential>\r
332 <cc userdefine="on">\r
333 <command type="PP" cmd="${PP}" workdir="${DEST_DIR_OUTPUT}/@{FILEPATH}" family="${PP_FAMILY}">\r
334 <EXTRA.INC.1/>\r
335 <argument value="${PP_FLAGS}"/>\r
336 <fileset casesensitive="on" file="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>\r
337 </command>\r
338 </cc>\r
339 \r
340 <cc userdefine="on">\r
341 <command type="ASM" cmd="${ASM}" workdir="${DEST_DIR_OUTPUT}" family="${ASM_FAMILY}"\r
342 includepathDelimiter="-I" outputDelimiter="-o"\r
343 outputFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj">\r
344 <EXTRA.INC.1/>\r
345 <argument value="${ASM_FLAGS}"/>\r
346 <EXTRA.ARG.1/>\r
347 <fileset casesensitive="on" file="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.i"/>\r
348 </command>\r
349 </cc>\r
350 </sequential>\r
351 </OnDependency>\r
352 </sequential>\r
353 </macrodef>\r
354\r
355\r
356 <macrodef name="Build_IPF_PP_Code">\r
357 <attribute name="FILEPATH"/>\r
358 <attribute name="FILENAME"/>\r
359 <attribute name="FILEEXT" default="i"/>\r
360\r
361 <element name="EXTRA.INC" optional="yes"/>\r
362 <element name="EXTRA.ARG" optional="yes"/>\r
363\r
364 <sequential>\r
365 <mkdir dir="${DEST_DIR_OUTPUT}/@{FILEPATH}"/>\r
366 \r
367 <cc userdefine="on">\r
368 <command type="ASM" includepathDelimiter="-I">\r
369 <includepath path="${WORKSPACE_DIR}"/>\r
370 <includepath path="${MODULE_DIR}"/>\r
371 <includepath path="${MODULE_DIR}/${ARCH}"/>\r
372 <EXTRA.INC/>\r
373 \r
374 <argument value="${ASM_FLAGS}"/>\r
375 <EXTRA.ARG/>\r
376 <OutputFile File="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj"/>\r
377 \r
378 <fileset casesensitive="on" file="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>\r
379 </command>\r
380 </cc>\r
381 </sequential>\r
382 </macrodef>\r
383 \r
384 \r
385 <!--\r
386 Library private HashMap map = new HashMap();\r
387 -->\r
388 <macrodef name="Build_Library">\r
389 <attribute name="FILENAME" />\r
390 <attribute name="FILEEXT" default="obj"/>\r
391 \r
392 <sequential>\r
393 <var name="FILE_BASENAME" value="@{FILENAME}" />\r
394 <var name="FILE_PATH" value="." />\r
395 <mkdir dir="${BIN_DIR}"/>\r
396\r
397 <OnDependency>\r
398 <sourcefiles>\r
399 <fileset casesensitive="on" dir="${DEST_DIR_OUTPUT}" includes="**/*.obj"/>\r
400 </sourcefiles>\r
401 <targetfiles>\r
402 <file name="${BIN_DIR}/@{FILENAME}.lib"/>\r
403 </targetfiles>\r
404\r
405 <sequential>\r
406 <cc userdefine="on">\r
407 <command type="SLINK" cmd="${SLINK}" family="${SLINK_FAMILY}"\r
408 outputFile="${BIN_DIR}/@{FILENAME}.lib">\r
409 <argument value="${SLINK_FLAGS}"/>\r
410\r
411 <fileset casesensitive="on" dir="${DEST_DIR_OUTPUT}" includes="**/*.obj"/>\r
412 </command>\r
413 </cc>\r
414 </sequential>\r
415 </OnDependency>\r
416 </sequential>\r
417 </macrodef>\r
418\r
419 <!--\r
420 Unicode -> .sdb\r
421 -->\r
422 <macrodef name="Build_UNI">\r
423 <attribute name="FILEPATH"/>\r
424 <attribute name="FILENAME"/>\r
425 <attribute name="FILEEXT" default="uni"/>\r
426\r
427 <element name="EXTRA.INC" optional="yes"/>\r
428 <element name="EXTRA.ARG" optional="yes"/>\r
429\r
430 <sequential>\r
431 <mkdir dir="${DEST_DIR_OUTPUT}/@{FILEPATH}"/>\r
432\r
433 <OnDependency>\r
434 <sourcefiles>\r
435 <file name="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>\r
436 </sourcefiles>\r
437 <targetfiles>\r
438 <file name="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.sdb"/>\r
439 </targetfiles>\r
440\r
441 <sequential>\r
442 <strgather commandtype="parse" newdatabase="true">\r
443 <database name="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.sdb"/>\r
444 <EXTRA.INC/>\r
445 <EXTRA.ARG/>\r
446 <inputfile name="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>\r
447 </strgather>\r
448 </sequential>\r
449 </OnDependency>\r
450\r
451 <var name="SDB_FILES" value="${SDB_FILES}, ${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.sdb"/>\r
452 </sequential>\r
453 </macrodef>\r
454\r
455 <!--\r
456 .sdb(s) -> .c, .h -> .obj\r
457 -->\r
458 <macrodef name="Build_Unicode_Database">\r
459 <attribute name="FILEPATH"/>\r
460 <attribute name="FILENAME"/>\r
461 <attribute name="FILEEXT" default="sdb"/>\r
462\r
463 <element name="EXTRA.INC" optional="yes"/>\r
464 <element name="EXTRA.ARG" optional="yes"/>\r
465\r
466 <sequential>\r
467 <var name="FILE_BASENAME" value="@{FILENAME}" />\r
468 <var name="FILE_PATH" value="@{FILEPATH}" />\r
469 <OnDependency>\r
470 <sourcefiles>\r
471 <file list="${SDB_FILES}"/>\r
472 <file list="${SOURCE_FILES}"/>\r
473 </sourcefiles>\r
474 <targetfiles>\r
475 <file name="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.sdb"/>\r
476 </targetfiles>\r
477 \r
478 <sequential>\r
479 <strgather commandtype="scan" outputdatabase="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.sdb" verbose="read">\r
480 <skipext name=".uni"/>\r
481 <skipext name=".h"/>\r
482 <database list="${SDB_FILES}"/>\r
483 <inputfile name="${SOURCE_FILES}"/>\r
484 </strgather>\r
485 </sequential>\r
486 </OnDependency>\r
487\r
488 <OnDependency>\r
489 <sourcefiles>\r
490 <file name="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.sdb"/>\r
491 </sourcefiles>\r
492 <targetfiles>\r
493 <file name="${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}StrDefs.h"/>\r
494 <file name="${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}Strings.hpk"/>\r
495 <file name="${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}Strings.c"/>\r
496 </targetfiles>\r
497 \r
498 <sequential>\r
499 <strgather basename="@{FILENAME}Strings" commandtype="dump"\r
500 outputdefines="${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}StrDefs.h"\r
501 outputhpk="${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}Strings.hpk"\r
502 outputstring="${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}Strings.c">\r
503 <database name="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.sdb"/>\r
504 </strgather>\r
505 </sequential>\r
506 </OnDependency>\r
507\r
508 <OnDependency>\r
509 <sourcefiles>\r
510 <file name="${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}Strings.c"/>\r
511 </sourcefiles>\r
512 <targetfiles>\r
513 <file name="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}Strings.obj"/>\r
514 </targetfiles>\r
515 \r
516 <sequential>\r
517 <cc userdefine="on">\r
518 <command type="CC" cmd="${CC}" workdir="${DEST_DIR_OUTPUT}" family="${CC_FAMILY}"\r
519 includepathDelimiter="-I"\r
520 outputFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}Strings.obj">\r
521 <argument value="${CC_FLAGS}"/>\r
522 <EXTRA.INC />\r
523 <fileset casesensitive="on" file="${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}Strings.c"/>\r
524 </command>\r
525 </cc>\r
526 </sequential>\r
527 </OnDependency>\r
528\r
529 </sequential>\r
530 </macrodef>\r
531\r
532 <!--\r
533 Vfr\r
534 -->\r
535 <macrodef name="Build_VFR">\r
536 <attribute name="FILEPATH"/>\r
537 <attribute name="FILENAME"/>\r
538 <attribute name="FILEEXT" default="vfr"/>\r
539\r
540 <element name="EXTRA.INC" optional="yes"/>\r
541 <element name="EXTRA.ARG" optional="yes"/>\r
542\r
543 <sequential>\r
544 <mkdir dir="${DEST_DIR_DEBUG}/@{FILEPATH}"/>\r
545\r
546 <if>\r
547 <available type="file" file="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj"/>\r
548 <then>\r
549 <makedeps DepsFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}.dep">\r
550 <input file="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>\r
551 <EXTRA.INC/>\r
552 </makedeps>\r
553 </then>\r
554 </if>\r
555\r
556 <OnDependency>\r
557 <sourcefiles>\r
558 <file listfile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}.dep"/>\r
559 </sourcefiles>\r
560 <targetfiles>\r
561 <file name="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj"/>\r
562 </targetfiles>\r
563\r
564 <sequential>\r
565 <vfrcompile createIfrBinFile="on" createListFile="on" outPutDir="${DEST_DIR_DEBUG}/@{FILEPATH}" vfrFile="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}">\r
566 <EXTRA.INC/>\r
567 </vfrcompile>\r
568 \r
569 <cc userdefine="on">\r
570 <command type="CC" cmd="${CC}" workdir="${DEST_DIR_OUTPUT}" \r
571 includepathDelimiter="-I" family="${CC_FAMILY}"\r
572 outputFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj" >\r
573 <argument value="${CC_FLAGS}"/>\r
574 <EXTRA.INC/>\r
575 <EXTRA.ARG/>\r
576 <fileset casesensitive="on" file="${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}.c"/>\r
577 </command>\r
578 </cc>\r
579 <delete file="${PLATFORM_DIR}/@{FILENAME}.i" />\r
580 </sequential>\r
581 </OnDependency>\r
582 </sequential>\r
583 </macrodef>\r
584\r
585 <!--\r
586 DUMMY\r
587 -->\r
588 <macrodef name="Build_DUMMY">\r
589 <attribute name="FILEPATH"/>\r
590 <attribute name="FILENAME"/>\r
591 <attribute name="FILEEXT"/>\r
592\r
593 <element name="EXTRA.INC" optional="yes"/>\r
594 <element name="EXTRA.ARG" optional="yes"/>\r
595\r
596 <sequential>\r
597 <echo message="Ignoring ${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>\r
598 </sequential>\r
599 </macrodef>\r
600\r
601<!--############################################################################\r
602 Build Sections\r
603#############################################################################-->\r
604 <!--\r
605 DLL\r
606 -->\r
607 <macrodef name="GenDll">\r
608 <attribute name="FILEPATH"/>\r
609 <attribute name="FILENAME"/>\r
610 <attribute name="FILEEXT"/>\r
611\r
612 <element name="LIB.ARG" optional="yes"/>\r
613 <element name="LINK.ARG" optional="yes"/>\r
614\r
615 <sequential>\r
616 <var name="FILE_BASENAME" value="@{FILENAME}" />\r
617 <var name="FILE_PATH" value="@{FILEPATH}" />\r
618 <OnDependency>\r
619 <sourcefiles>\r
620 <file list="${LIBS}"/>\r
621 <fileset casesensitive="on" dir="${DEST_DIR_OUTPUT}" includes="**/*.obj"/>\r
622 </sourcefiles>\r
623 <targetfiles>\r
624 <file name="${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}.dll"/>\r
625 </targetfiles>\r
626\r
627 <sequential>\r
628 <cc userdefine="on">\r
629 <command type="SLINK" cmd="${SLINK}" family="${SLINK_FAMILY}"\r
630 outputFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}Local.lib">\r
631 <argument value="${SLINK_FLAGS}"/>\r
632\r
633 <fileset casesensitive="on" dir="${DEST_DIR_OUTPUT}" includes="**/*.obj"/>\r
634 </command>\r
635 </cc>\r
636 <cc userdefine="on">\r
637 <command type="DLINK" cmd="${DLINK}" family="${DLINK_FAMILY}"\r
638 outputFile="${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}.dll" >\r
639 <argument value="${DLINK_FLAGS}"/>\r
640 <libset libs="${LIBS}"/>\r
641 <libset libs="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}Local.lib"/>\r
642 <libset libs="${DLINK_SPATH}" />\r
643 <LINK.ARG/>\r
644 </command>\r
645 </cc>\r
646 </sequential>\r
647 </OnDependency>\r
648 </sequential>\r
649 </macrodef>\r
650\r
651 <!--\r
652 EFI\r
653 -->\r
654 <macrodef name="GenEfi">\r
655 <attribute name="FILEPATH"/>\r
656 <attribute name="FILENAME"/>\r
657 <attribute name="FILEEXT" default="dll"/>\r
658\r
659 <sequential>\r
660 <OnDependency>\r
661 <sourcefiles>\r
662 <file name="${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>\r
663 </sourcefiles>\r
664 <targetfiles>\r
665 <file name="${DEST_DIR_OUTPUT}/@{FILENAME}.efi"/>\r
666 </targetfiles>\r
667\r
668 <sequential>\r
669 <fwimage componentType="${MODULE_TYPE}" outImage="${DEST_DIR_OUTPUT}/@{FILENAME}.efi" \r
670 peImage="${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}" time="0"/>\r
671 </sequential>\r
672 </OnDependency>\r
673 </sequential>\r
674 </macrodef>\r
675\r
676<!--\r
677 EFI_SECTION_FREEFORM_SUBTYPE_GUID\r
678 EFI_SECTION_VERSION\r
679 EFI_SECTION_USER_INTERFACE\r
680 EFI_SECTION_DXE_DEPEX\r
681 EFI_SECTION_PEI_DEPEX\r
682 EFI_SECTION_PE32\r
683 EFI_SECTION_PIC\r
684 EFI_SECTION_TE\r
685 EFI_SECTION_RAW\r
686 EFI_SECTION_COMPRESSION\r
687 EFI_SECTION_GUID_DEFINED\r
688 EFI_SECTION_COMPATIBILITY16\r
689 EFI_SECTION_FIRMWARE_VOLUME_IMAGE\r
690 -->\r
691 <!--\r
692 EFI_SECTION_PE32\r
693 -->\r
694\r
695 <macrodef name="EFI_SECTION_TE">\r
696 <attribute name="FILEPATH"/>\r
697 <attribute name="FILENAME"/>\r
698 <attribute name="FILEEXT" default="" />\r
699\r
700 <element name="PRE.PROCESS" optional="yes"/>\r
701 <element name="POST.PROCESS" optional="yes"/>\r
702\r
703 <sequential>\r
704 <PRE.PROCESS/>\r
705 <if>\r
706 <not>\r
707 <equals arg1="${LIBS}" arg2=""/>\r
708 </not>\r
709\r
710 <then>\r
711 <GenDll FILEPATH="." FILENAME="@{FILENAME}" FILEEXT="">\r
712 <LIB.ARG></LIB.ARG>\r
713 <LINK.ARG></LINK.ARG>\r
714 </GenDll>\r
715\r
716 <GenEfi FILEPATH="." FILENAME="@{FILENAME}" FILEEXT="dll"/>\r
717 </then>\r
718 </if>\r
719\r
720 <OnDependency>\r
721 <sourcefiles>\r
722 <file name="${DEST_DIR_OUTPUT}/@{FILENAME}.efi"/>\r
723 </sourcefiles>\r
724 <targetfiles>\r
725 <file name="${DEST_DIR_OUTPUT}/@{FILENAME}.tes"/>\r
726 </targetfiles>\r
727\r
728 <sequential>\r
729 <copy file="${DEST_DIR_OUTPUT}/@{FILENAME}.efi" tofile="${BIN_DIR}/@{FILENAME}.efi" />\r
730 <copy file="${DEST_DIR_OUTPUT}/@{FILENAME}.efi" tofile="${DEST_DIR_DEBUG}/@{FILENAME}.efi" /> \r
731 <genteimage Dump="false" Verbose="false" OutputDir="" OutputFile="${DEST_DIR_OUTPUT}/@{FILENAME}.te" InputFile="${DEST_DIR_OUTPUT}/@{FILENAME}.efi"/>\r
732 <copy file="${DEST_DIR_OUTPUT}/@{FILENAME}.te" tofile="${BIN_DIR}/@{FILENAME}.te" />\r
733 <gensection inputfile="${DEST_DIR_OUTPUT}/@{FILENAME}.te" \r
734 outputfile="${DEST_DIR_OUTPUT}/@{FILENAME}.tes" \r
735 sectiontype="EFI_SECTION_TE"/>\r
736 <POST.PROCESS/>\r
737 </sequential>\r
738 </OnDependency>\r
739 </sequential>\r
740 </macrodef>\r
741\r
742 <macrodef name="EFI_SECTION_PE32">\r
743 <attribute name="FILEPATH"/>\r
744 <attribute name="FILENAME"/>\r
745 <attribute name="FILEEXT" default="" />\r
746\r
747 <element name="PRE.PROCESS" optional="yes"/>\r
748 <element name="POST.PROCESS" optional="yes"/>\r
749\r
750 <sequential>\r
751 <PRE.PROCESS/>\r
752 <if>\r
753 <not>\r
754 <!-- TBD ${OBJECTS} -->\r
755 <equals arg1="${LIBS}" arg2=""/>\r
756 </not>\r
757\r
758 <then>\r
759 <GenDll FILEPATH="." FILENAME="@{FILENAME}" FILEEXT="">\r
760 <LIB.ARG></LIB.ARG>\r
761 <LINK.ARG></LINK.ARG>\r
762 </GenDll>\r
763\r
764 <GenEfi FILEPATH="." FILENAME="@{FILENAME}" FILEEXT="dll"/>\r
765 </then>\r
766 </if>\r
767 \r
768 <OnDependency>\r
769 <sourcefiles>\r
770 <file name="${DEST_DIR_OUTPUT}/@{FILENAME}.efi"/>\r
771 </sourcefiles>\r
772 <targetfiles>\r
773 <file name="${DEST_DIR_OUTPUT}/@{FILENAME}.pe32"/>\r
774 </targetfiles>\r
775\r
776 <sequential>\r
777 <copy file="${DEST_DIR_OUTPUT}/@{FILENAME}.efi" tofile="${BIN_DIR}/@{FILENAME}.efi" />\r
778 \r
779 <gensection inputfile="${DEST_DIR_OUTPUT}/@{FILENAME}.efi" \r
780 outputfile="${DEST_DIR_OUTPUT}/@{FILENAME}.pe32" \r
781 sectiontype="EFI_SECTION_PE32"/>\r
782 \r
783 <POST.PROCESS/>\r
784 </sequential>\r
785 </OnDependency>\r
786 <copy file="${DEST_DIR_OUTPUT}/@{FILENAME}.efi" tofile="${DEST_DIR_DEBUG}/@{FILENAME}.efi" />\r
787 </sequential>\r
788 </macrodef>\r
789\r
790 <!--\r
791 EFI_SECTION_VERSION\r
792 -->\r
793 <macrodef name="EFI_SECTION_VERSION">\r
794 <attribute name="FILEPATH"/>\r
795 <attribute name="FILENAME"/>\r
796 <attribute name="FILEEXT" default="" />\r
797 <attribute name="VERSION" default="0000"/>\r
798\r
799 <element name="PRE.PROCESS" optional="yes"/>\r
800 <element name="POST.PROCESS" optional="yes"/>\r
801\r
802 <sequential>\r
803 <if>\r
804 <not>\r
805 <available type="file" file="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.ver"/>\r
806 </not>\r
807\r
808 <then>\r
809 <PRE.PROCESS/>\r
810 <gensection outputfile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.ver" \r
811 versionnum="@{VERSION}"\r
812 sectiontype="EFI_SECTION_VERSION"/>\r
813 <POST.PROCESS/>\r
814 </then>\r
815 </if>\r
816 </sequential>\r
817 </macrodef>\r
818\r
819 <!--\r
820 EFI_SECTION_USER_INTERFACE\r
821 -->\r
822 <macrodef name="EFI_SECTION_USER_INTERFACE">\r
823 <attribute name="FILEPATH"/>\r
824 <attribute name="FILENAME"/>\r
825 <attribute name="FILEEXT" default="" />\r
826 <attribute name="UI" default="${BASE_NAME}"/>\r
827\r
828 <element name="PRE.PROCESS" optional="yes"/>\r
829 <element name="POST.PROCESS" optional="yes"/>\r
830\r
831 <sequential>\r
832 <if>\r
833 <not>\r
834 <available type="file" file="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.ui"/>\r
835 </not>\r
836\r
837 <then>\r
838 <PRE.PROCESS/>\r
839 <gensection interfacestring="@{UI}"\r
840 outputfile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.ui" \r
841 sectiontype="EFI_SECTION_USER_INTERFACE"/>\r
842 <POST.PROCESS/>\r
843 </then>\r
844 </if>\r
845 </sequential>\r
846 </macrodef>\r
847\r
848 <!--\r
849 EFI_SECTION_DXE_DEPEX\r
850 -->\r
851 <macrodef name="EFI_SECTION_DXE_DEPEX">\r
852 <attribute name="FILEPATH"/>\r
853 <attribute name="FILENAME"/>\r
854 <attribute name="FILEEXT" default="dxs"/>\r
855\r
856 <element name="PRE.PROCESS" optional="yes"/>\r
857 <element name="POST.PROCESS" optional="yes"/>\r
858\r
859 <sequential>\r
860 <PRE.PROCESS/>\r
861\r
862 <if>\r
863 <available type="file" file="${DEST_DIR_OUTPUT}/@{FILENAME}.depex"/>\r
864 <then>\r
865 <OnDependency>\r
866 <sourcefiles>\r
867 <file name="${DEST_DIR_OUTPUT}/@{FILENAME}.depex"/>\r
868 </sourcefiles>\r
869 <targetfiles>\r
870 <file name="${DEST_DIR_OUTPUT}/@{FILENAME}.dpx"/>\r
871 </targetfiles>\r
872 <sequential>\r
873 <gensection inputfile="${DEST_DIR_OUTPUT}/@{FILENAME}.depex" \r
874 outputfile="${DEST_DIR_OUTPUT}/@{FILENAME}.dpx" \r
875 sectiontype="EFI_SECTION_DXE_DEPEX"/>\r
876 </sequential>\r
877 </OnDependency>\r
878 </then>\r
879 <else>\r
880 <if>\r
881 <not>\r
882 <available type="file" file="${DEST_DIR_OUTPUT}/@{FILENAME}.dpx"/>\r
883 </not>\r
884 <then>\r
885 <touch file="${DEST_DIR_OUTPUT}/@{FILENAME}.dpx"/>\r
886 </then>\r
887 </if>\r
888 </else>\r
889 </if>\r
890\r
891 <POST.PROCESS/>\r
892 </sequential>\r
893 </macrodef>\r
894\r
895 <!--\r
896 EFI_SECTION_PEI_DEPEX\r
897 -->\r
898 <macrodef name="EFI_SECTION_PEI_DEPEX">\r
899 <attribute name="FILEPATH"/>\r
900 <attribute name="FILENAME"/>\r
901 <attribute name="FILEEXT" default="dxs"/>\r
902\r
903 <element name="PRE.PROCESS" optional="yes"/>\r
904 <element name="POST.PROCESS" optional="yes"/>\r
905 <sequential>\r
906 <PRE.PROCESS/>\r
907 <if>\r
908 <available type="file" file="${DEST_DIR_OUTPUT}/@{FILENAME}.depex"/>\r
909 <then>\r
910 <OnDependency>\r
911 <sourcefiles>\r
912 <file name="${DEST_DIR_OUTPUT}/@{FILENAME}.depex"/>\r
913 </sourcefiles>\r
914 <targetfiles>\r
915 <file name="${DEST_DIR_OUTPUT}/@{FILENAME}.dpx"/>\r
916 </targetfiles>\r
917\r
918 <sequential>\r
919 <gensection inputfile="${DEST_DIR_OUTPUT}/@{FILENAME}.depex" \r
920 outputfile="${DEST_DIR_OUTPUT}/@{FILENAME}.dpx" \r
921 sectiontype="EFI_SECTION_PEI_DEPEX"/>\r
922 </sequential>\r
923 </OnDependency>\r
924 \r
925 </then>\r
926 <else>\r
927 <if>\r
928 <not>\r
929 <available type="file" file="${DEST_DIR_OUTPUT}/@{FILENAME}.dpx"/>\r
930 </not>\r
931 <then>\r
932 <touch file="${DEST_DIR_OUTPUT}/@{FILENAME}.dpx"/>\r
933 </then>\r
934 </if>\r
935 </else>\r
936 </if>\r
937 <POST.PROCESS/>\r
938 </sequential>\r
939 </macrodef>\r
940\r
941\r
942 <!--\r
943 EFI_SECTION_RAW\r
944 -->\r
945 <macrodef name="EFI_SECTION_RAW">\r
946 <attribute name="FILEPATH"/>\r
947 <attribute name="FILENAME"/>\r
948 <attribute name="FILEEXT" default="bin"/>\r
949\r
950 <element name="PRE.PROCESS" optional="yes"/>\r
951 <element name="POST.PROCESS" optional="yes"/>\r
952\r
953 <sequential>\r
954 <OnDependency>\r
955 <sourcefiles>\r
956 <file name="${DEST_DIR_OUTPUT}/@{FILENAME}.@{FILEEXT}"/>\r
957 </sourcefiles>\r
958 <targetfiles>\r
959 <file name="${DEST_DIR_OUTPUT}/@{FILENAME}.sec"/>\r
960 </targetfiles>\r
961\r
962 <sequential>\r
963 <PRE.PROCESS/>\r
964 <gensection inputfile="${DEST_DIR_OUTPUT}/@{FILENAME}.@{FILEEXT}" \r
965 outputfile="${DEST_DIR_OUTPUT}/@{FILENAME}.sec" \r
966 sectiontype="EFI_SECTION_RAW"/>\r
967 <POST.PROCESS/>\r
968 </sequential>\r
969 </OnDependency>\r
970 </sequential>\r
971 </macrodef>\r
972\r
973 <!--\r
974 EFI_SECTION_FIRMWARE_VOLUME_IMAGE\r
975 -->\r
976 <macrodef name="EFI_SECTION_FIRMWARE_VOLUME_IMAGE">\r
977 <attribute name="FILEPATH"/>\r
978 <attribute name="FILENAME"/>\r
979 <attribute name="FILEEXT" default="fv"/>\r
980\r
981 <element name="PRE.PROCESS" optional="yes"/>\r
982 <element name="POST.PROCESS" optional="yes"/>\r
983\r
984 <sequential>\r
985 <OnDependency>\r
986 <sourcefiles>\r
987 <file name="${FV_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>\r
988 </sourcefiles>\r
989 <targetfiles>\r
990 <file name="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}fv.sec"/>\r
991 </targetfiles>\r
992\r
993 <sequential>\r
994 <PRE.PROCESS/>\r
995 \r
996 <copy file="${FV_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}" \r
997 tofile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}" \r
998 overwrite="true"/>\r
999 <gensection inputfile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}" \r
1000 outputfile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}fv.sec" \r
1001 sectiontype="EFI_SECTION_FIRMWARE_VOLUME_IMAGE"/>\r
1002 \r
1003 <POST.PROCESS/>\r
1004 </sequential>\r
1005 </OnDependency>\r
1006 </sequential>\r
1007 </macrodef>\r
1008\r
1009 <!--\r
1010 Binary\r
1011 -->\r
1012 <macrodef name="Build_Binary">\r
1013 <attribute name="FILEPATH"/>\r
1014 <attribute name="FILENAME"/>\r
1015 <attribute name="FILEEXT" default="bin"/>\r
1016\r
1017 <element name="EXTRA.INC" optional="yes"/>\r
1018 <element name="EXTRA.ARG" optional="yes"/>\r
1019\r
1020 <sequential>\r
1021 <copy file="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}" \r
1022 tofile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.bin"/>\r
1023 </sequential>\r
1024 </macrodef>\r
1025\r
1026 <!--\r
1027 Graphics (bmp, ...)\r
1028 -->\r
1029 <macrodef name="Build_Graphics">\r
1030 <attribute name="FILEPATH"/>\r
1031 <attribute name="FILENAME"/>\r
1032 <attribute name="FILEEXT" default="bmp"/>\r
1033\r
1034 <element name="EXTRA.INC" optional="yes"/>\r
1035 <element name="EXTRA.ARG" optional="yes"/>\r
1036\r
1037 <sequential>\r
1038 <mkdir dir="${MODULE_DIR}/@{FILEPATH}" /> \r
1039 <copy file="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}" \r
1040 tofile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.bin"/>\r
1041 </sequential>\r
1042 </macrodef> \r
1043 <macrodef name="Build_EFI">\r
1044 <attribute name="FILEPATH"/>\r
1045 <attribute name="FILENAME"/>\r
1046 <attribute name="FILEEXT" default="efi"/>\r
1047\r
1048 <element name="EXTRA.INC" optional="yes"/>\r
1049 <element name="EXTRA.ARG" optional="yes"/>\r
1050\r
1051 <sequential>\r
1052 <mkdir dir="${MODULE_DIR}/@{FILEPATH}" /> \r
1053 <copy file="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}" \r
1054 tofile="${DEST_DIR_OUTPUT}/${BASE_NAME}.efi"/>\r
1055 </sequential>\r
1056 </macrodef>\r
1057</project>\r