]> git.proxmox.com Git - mirror_edk2.git/blame - Tools/Conf/BuildMacro.xml
Added Build_DUMMY macro to skip those files in msa which should not be handled by...
[mirror_edk2.git] / Tools / Conf / BuildMacro.xml
CommitLineData
878ddf1f 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
5fc17c92 19 <macrodef name="Build_CCode">\r
878ddf1f 20 <attribute name="FILEPATH"/>\r
21 <attribute name="FILENAME"/>\r
22 <attribute name="FILEEXT" default="c"/>\r
5fc17c92 23 \r
878ddf1f 24 <element name="EXTRA.INC" optional="yes"/>\r
25 <element name="EXTRA.ARG" optional="yes"/>\r
5fc17c92 26 \r
878ddf1f 27 <sequential>\r
5fc17c92 28 <var name="FILE_BASENAME" value="@{FILENAME}" />\r
29 <var name="FILE_PATH" value="@{FILEPATH}" />\r
22e0585c 30 <mkdir dir="${DEST_DIR_OUTPUT}/@{FILEPATH}"/>\r
878ddf1f 31\r
32 <if>\r
22e0585c 33 <available type="file" file="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj"/>\r
878ddf1f 34 <then>\r
22e0585c 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
878ddf1f 38 <EXTRA.INC/>\r
39 </makedeps>\r
40 </then>\r
41 </if>\r
42\r
43 <OnDependency>\r
44 <sourcefiles>\r
22e0585c 45 <file ListFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}.dep"/>\r
878ddf1f 46 </sourcefiles>\r
47 <targetfiles>\r
22e0585c 48 <file Name="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj"/>\r
878ddf1f 49 </targetfiles>\r
50\r
51 <sequential>\r
52 <cc userdefine="on">\r
5fc17c92 53 <command type="CC" cmd="${CC}" workdir="${DEST_DIR_OUTPUT}" family="${CC_FAMILY}"\r
54 outputFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj">\r
878ddf1f 55 <EXTRA.INC/>\r
878ddf1f 56 <argument value="${CC_FLAGS}"/>\r
57 <EXTRA.ARG/>\r
22e0585c 58 <fileset casesensitive="off" file="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>\r
878ddf1f 59 </command>\r
60 </cc>\r
61 </sequential>\r
62 </OnDependency>\r
878ddf1f 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
5fc17c92 76 <var name="FILE_BASENAME" value="@{FILENAME}" />\r
77 <var name="FILE_PATH" value="@{FILEPATH}" />\r
22e0585c 78 <mkdir dir="${DEST_DIR_OUTPUT}/@{FILEPATH}"/>\r
878ddf1f 79\r
80 <if>\r
22e0585c 81 <available type="file" file="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj"/>\r
878ddf1f 82 <then>\r
22e0585c 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
878ddf1f 86 <EXTRA.INC/>\r
87 </makedeps>\r
88 </then>\r
89 </if>\r
90\r
91 <OnDependency>\r
92 <sourcefiles>\r
22e0585c 93 <file ListFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}.dep"/>\r
878ddf1f 94 </sourcefiles>\r
95 <targetfiles>\r
22e0585c 96 <file Name="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj"/>\r
878ddf1f 97 </targetfiles>\r
98\r
99 <sequential>\r
100 <cc userdefine="on">\r
5fc17c92 101 <command type="CC" cmd="${CC}" workdir="${DEST_DIR_OUTPUT}" family="${CC_FAMILY}"\r
102 outputFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj">\r
878ddf1f 103 <EXTRA.INC/>\r
878ddf1f 104 <argument value="${CC_FLAGS}"/>\r
105 <EXTRA.ARG/>\r
22e0585c 106 <fileset casesensitive="off" file="${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>\r
878ddf1f 107 </command>\r
108 </cc>\r
109 </sequential>\r
110 </OnDependency>\r
878ddf1f 111 </sequential>\r
112 </macrodef>\r
113\r
5fc17c92 114 <macrodef name="Build_DPX">\r
878ddf1f 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
5fc17c92 121 \r
878ddf1f 122\r
123 <sequential>\r
5fc17c92 124 <var name="FILE_BASENAME" value="@{FILENAME}" />\r
125 <var name="FILE_PATH" value="@{FILEPATH}" />\r
22e0585c 126 <mkdir dir="${DEST_DIR_OUTPUT}/@{FILEPATH}"/>\r
878ddf1f 127\r
128 <OnDependency>\r
129 <sourcefiles>\r
22e0585c 130 <file name="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>\r
878ddf1f 131 </sourcefiles>\r
132 <targetfiles>\r
5fc17c92 133 <file name="${DEST_DIR_OUTPUT}/${BASE_NAME}.depex"/>\r
878ddf1f 134 </targetfiles>\r
135\r
136 <sequential>\r
878ddf1f 137 <cc userdefine="on">\r
df569f61 138 <command type="CC" cmd="${CC}" workdir="${DEST_DIR_OUTPUT}/@{FILEPATH}" family="${CC_FAMILY}"\r
139 outputFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.i">\r
878ddf1f 140 <EXTRA.INC/>\r
141 <argument value="${PP_FLAGS}"/>\r
5fc17c92 142 <fileset casesensitive="off" file="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>\r
878ddf1f 143 </command>\r
144 </cc>\r
5fc17c92 145 \r
df569f61 146 <gendepex inputFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.i" outputFile="${DEST_DIR_OUTPUT}/${BASE_NAME}.depex"/>\r
878ddf1f 147 </sequential>\r
148 </OnDependency>\r
149 </sequential>\r
150 </macrodef>\r
5fc17c92 151 \r
152 <macrodef name="Build_ASM">\r
878ddf1f 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
5fc17c92 159 \r
160 <!-- Dispath ASM file, there are three type. \r
df569f61 161 asm - Build_Assembly\r
162 S - Build_Gcc_Assembly\r
163 s - Build_Ipf_Assembly -->\r
878ddf1f 164 <sequential>\r
5fc17c92 165 <if>\r
df569f61 166 <equals arg1="@{FILEEXT}" arg2="asm" />\r
5fc17c92 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
df569f61 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
5fc17c92 182 <elseif>\r
25832ed3 183 <equals arg1="@{FILEEXT}" arg2="s" />\r
5fc17c92 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
878ddf1f 192 </sequential>\r
193 </macrodef>\r
5fc17c92 194 \r
0fd9e137 195 <!--\r
5fc17c92 196 IA32/x64 Assembly\r
0fd9e137 197 -->\r
5fc17c92 198 <macrodef name="Build_Assembly">\r
0fd9e137 199 <attribute name="FILEPATH"/>\r
200 <attribute name="FILENAME"/>\r
201 <attribute name="FILEEXT" default="asm"/>\r
202\r
5fc17c92 203 <element name="EXTRA.INC.1" optional="yes"/>\r
204 <element name="EXTRA.ARG.1" optional="yes"/>\r
0fd9e137 205\r
206 <sequential>\r
5fc17c92 207 <var name="FILE_BASENAME" value="@{FILENAME}" />\r
208 <var name="FILE_PATH" value="@{FILEPATH}" />\r
0fd9e137 209 <mkdir dir="${DEST_DIR_OUTPUT}/@{FILEPATH}"/>\r
210\r
0fd9e137 211 <OnDependency>\r
212 <sourcefiles>\r
5fc17c92 213 <file Name="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>\r
0fd9e137 214 </sourcefiles>\r
215 <targetfiles>\r
216 <file Name="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj"/>\r
217 </targetfiles>\r
218\r
219 <sequential>\r
c44794ef 220 <cc userdefine="on">\r
cfa5a9c5 221 <command type="PP" cmd="${PP}" workdir="${DEST_DIR_OUTPUT}/@{FILEPATH}" family="${PP_FAMILY}">\r
c44794ef 222 <EXTRA.INC.1/>\r
223 <argument value="${PP_FLAGS}"/>\r
224 <fileset casesensitive="off" 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
0d2001d3 241\r
0fd9e137 242 <cc userdefine="on">\r
5fc17c92 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
0fd9e137 247 <argument value="${ASM_FLAGS}"/>\r
5fc17c92 248 <EXTRA.ARG.1/>\r
249 \r
0d2001d3 250 <fileset casesensitive="off" file="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.i"/>\r
75d0c5b1 251 </command>\r
252 </cc>\r
253 </sequential>\r
254 </OnDependency>\r
75d0c5b1 255 </sequential>\r
df569f61 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
df569f61 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
7c707b02 291 <fileset casesensitive="off" file="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>\r
df569f61 292 </command>\r
293 </cc>\r
294 </sequential>\r
295 </OnDependency>\r
296 </sequential>\r
75d0c5b1 297 </macrodef>\r
298\r
878ddf1f 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
5fc17c92 307 <element name="EXTRA.INC.1" optional="yes"/>\r
308 <element name="EXTRA.ARG.1" optional="yes"/>\r
878ddf1f 309\r
310 <sequential>\r
22e0585c 311 <mkdir dir="${DEST_DIR_OUTPUT}/@{FILEPATH}"/>\r
878ddf1f 312\r
313 <if>\r
22e0585c 314 <available type="file" file="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj"/>\r
878ddf1f 315 <then>\r
22e0585c 316 <makedeps DepsFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}.dep">\r
317 <input file="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>\r
5fc17c92 318 <EXTRA.INC.1/>\r
878ddf1f 319 </makedeps>\r
320 </then>\r
321 </if>\r
322\r
323 <OnDependency>\r
324 <sourcefiles>\r
22e0585c 325 <file listfile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}.dep"/>\r
878ddf1f 326 </sourcefiles>\r
327 <targetfiles>\r
22e0585c 328 <file name="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj"/>\r
878ddf1f 329 </targetfiles>\r
330\r
331 <sequential>\r
878ddf1f 332 <cc userdefine="on">\r
cfa5a9c5 333 <command type="PP" cmd="${PP}" workdir="${DEST_DIR_OUTPUT}/@{FILEPATH}" family="${PP_FAMILY}">\r
5fc17c92 334 <EXTRA.INC.1/>\r
878ddf1f 335 <argument value="${PP_FLAGS}"/>\r
0fd9e137 336 <fileset casesensitive="off" file="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>\r
878ddf1f 337 </command>\r
338 </cc>\r
5fc17c92 339 \r
878ddf1f 340 <cc userdefine="on">\r
5fc17c92 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
878ddf1f 345 <argument value="${ASM_FLAGS}"/>\r
5fc17c92 346 <EXTRA.ARG.1/>\r
347 <fileset casesensitive="off" file="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.i"/>\r
878ddf1f 348 </command>\r
349 </cc>\r
350 </sequential>\r
351 </OnDependency>\r
878ddf1f 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
22e0585c 365 <mkdir dir="${DEST_DIR_OUTPUT}/@{FILEPATH}"/>\r
5fc17c92 366 \r
878ddf1f 367 <cc userdefine="on">\r
368 <command type="ASM" includepathDelimiter="-I">\r
369 <includepath path="${WORKSPACE_DIR}"/>\r
370 <includepath path="${MODULE_DIR}"/>\r
22e0585c 371 <includepath path="${MODULE_DIR}/${ARCH}"/>\r
878ddf1f 372 <EXTRA.INC/>\r
5fc17c92 373 \r
878ddf1f 374 <argument value="${ASM_FLAGS}"/>\r
375 <EXTRA.ARG/>\r
22e0585c 376 <OutputFile File="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj"/>\r
5fc17c92 377 \r
22e0585c 378 <fileset casesensitive="off" file="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>\r
878ddf1f 379 </command>\r
380 </cc>\r
878ddf1f 381 </sequential>\r
382 </macrodef>\r
5fc17c92 383 \r
384 \r
385 <!--\r
386 Library private HashMap map = new HashMap();\r
878ddf1f 387 -->\r
5fc17c92 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
878ddf1f 396\r
5fc17c92 397 <OnDependency>\r
398 <sourcefiles>\r
399 <file list="${OBJECTS}"/>\r
400 </sourcefiles>\r
401 <targetfiles>\r
402 <file name="${BIN_DIR}/@{FILENAME}.lib"/>\r
403 </targetfiles>\r
878ddf1f 404\r
5fc17c92 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
878ddf1f 410\r
5fc17c92 411 <fileset casesensitive="off" dir="${DEST_DIR_OUTPUT}" includes="**/*.obj"/>\r
412 </command>\r
413 </cc>\r
414 </sequential>\r
415 </OnDependency>\r
878ddf1f 416 </sequential>\r
417 </macrodef>\r
418\r
419 <!--\r
420 Unicode -> .sdb\r
421 -->\r
5fc17c92 422 <macrodef name="Build_UNI">\r
878ddf1f 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
22e0585c 431 <mkdir dir="${DEST_DIR_OUTPUT}/@{FILEPATH}"/>\r
878ddf1f 432\r
433 <OnDependency>\r
434 <sourcefiles>\r
22e0585c 435 <file name="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>\r
878ddf1f 436 </sourcefiles>\r
437 <targetfiles>\r
22e0585c 438 <file name="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.sdb"/>\r
878ddf1f 439 </targetfiles>\r
440\r
441 <sequential>\r
442 <strgather commandtype="parse" newdatabase="true">\r
22e0585c 443 <database name="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.sdb"/>\r
878ddf1f 444 <EXTRA.INC/>\r
445 <EXTRA.ARG/>\r
22e0585c 446 <inputfile name="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>\r
878ddf1f 447 </strgather>\r
448 </sequential>\r
449 </OnDependency>\r
450\r
5fc17c92 451 <var name="SDB_FILES" value="${SDB_FILES}, ${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.sdb"/>\r
878ddf1f 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
5fc17c92 467 <var name="FILE_BASENAME" value="@{FILENAME}" />\r
468 <var name="FILE_PATH" value="@{FILEPATH}" />\r
878ddf1f 469 <OnDependency>\r
470 <sourcefiles>\r
471 <file list="${SDB_FILES}"/>\r
472 <file list="${SOURCE_FILES}"/>\r
473 </sourcefiles>\r
474 <targetfiles>\r
22e0585c 475 <file name="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.sdb"/>\r
878ddf1f 476 </targetfiles>\r
5fc17c92 477 \r
878ddf1f 478 <sequential>\r
22e0585c 479 <strgather commandtype="scan" outputdatabase="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.sdb" verbose="read">\r
878ddf1f 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
22e0585c 490 <file name="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.sdb"/>\r
878ddf1f 491 </sourcefiles>\r
492 <targetfiles>\r
22e0585c 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
878ddf1f 496 </targetfiles>\r
5fc17c92 497 \r
878ddf1f 498 <sequential>\r
499 <strgather basename="@{FILENAME}Strings" commandtype="dump"\r
22e0585c 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
878ddf1f 504 </strgather>\r
505 </sequential>\r
506 </OnDependency>\r
507\r
508 <OnDependency>\r
509 <sourcefiles>\r
22e0585c 510 <file name="${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}Strings.c"/>\r
878ddf1f 511 </sourcefiles>\r
512 <targetfiles>\r
22e0585c 513 <file name="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}Strings.obj"/>\r
878ddf1f 514 </targetfiles>\r
5fc17c92 515 \r
878ddf1f 516 <sequential>\r
517 <cc userdefine="on">\r
5fc17c92 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
878ddf1f 521 <argument value="${CC_FLAGS}"/>\r
5fc17c92 522 <EXTRA.INC />\r
22e0585c 523 <fileset casesensitive="off" file="${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}Strings.c"/>\r
878ddf1f 524 </command>\r
525 </cc>\r
526 </sequential>\r
527 </OnDependency>\r
528\r
878ddf1f 529 </sequential>\r
530 </macrodef>\r
531\r
532 <!--\r
533 Vfr\r
534 -->\r
5fc17c92 535 <macrodef name="Build_VFR">\r
878ddf1f 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
22e0585c 547 <available type="file" file="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj"/>\r
878ddf1f 548 <then>\r
22e0585c 549 <makedeps DepsFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}.dep">\r
550 <input file="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>\r
878ddf1f 551 <EXTRA.INC/>\r
552 </makedeps>\r
553 </then>\r
554 </if>\r
555\r
556 <OnDependency>\r
557 <sourcefiles>\r
22e0585c 558 <file listfile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}.dep"/>\r
878ddf1f 559 </sourcefiles>\r
560 <targetfiles>\r
22e0585c 561 <file name="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj"/>\r
878ddf1f 562 </targetfiles>\r
563\r
564 <sequential>\r
136adffc 565 <vfrcompile createIfrBinFile="on" createListFile="on" outPutDir="${DEST_DIR_DEBUG}/@{FILEPATH}" vfrFile="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}">\r
878ddf1f 566 <EXTRA.INC/>\r
567 </vfrcompile>\r
5fc17c92 568 \r
878ddf1f 569 <cc userdefine="on">\r
5fc17c92 570 <command type="CC" cmd="${CC}" workdir="${DEST_DIR_OUTPUT}" \r
cfa5a9c5 571 includepathDelimiter="-I" family="${CC_FAMILY}"\r
5fc17c92 572 outputFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj" >\r
878ddf1f 573 <argument value="${CC_FLAGS}"/>\r
5fc17c92 574 <EXTRA.INC/>\r
878ddf1f 575 <EXTRA.ARG/>\r
22e0585c 576 <fileset casesensitive="off" file="${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}.c"/>\r
878ddf1f 577 </command>\r
578 </cc>\r
5fc17c92 579 <delete file="${PLATFORM_DIR}/@{FILENAME}.i" />\r
878ddf1f 580 </sequential>\r
581 </OnDependency>\r
878ddf1f 582 </sequential>\r
583 </macrodef>\r
584\r
a99a79e4 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="Ignore DUMMY file ${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>\r
598 </sequential>\r
599 </macrodef>\r
600\r
878ddf1f 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
5fc17c92 616 <var name="FILE_BASENAME" value="@{FILENAME}" />\r
617 <var name="FILE_PATH" value="@{FILEPATH}" />\r
878ddf1f 618 <OnDependency>\r
619 <sourcefiles>\r
878ddf1f 620 <file list="${LIBS}"/>\r
621 </sourcefiles>\r
622 <targetfiles>\r
22e0585c 623 <file name="${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}.dll"/>\r
878ddf1f 624 </targetfiles>\r
625\r
626 <sequential>\r
8b41e66e 627 <cc userdefine="on">\r
5fc17c92 628 <command type="SLINK" cmd="${SLINK}" family="${SLINK_FAMILY}"\r
629 outputFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}Local.lib">\r
630 <argument value="${SLINK_FLAGS}"/>\r
631\r
632 <fileset casesensitive="off" dir="${DEST_DIR_OUTPUT}" includes="**/*.obj"/>\r
8b41e66e 633 </command>\r
634 </cc>\r
878ddf1f 635 <cc userdefine="on">\r
5fc17c92 636 <command type="DLINK" cmd="${DLINK}" family="${DLINK_FAMILY}"\r
637 outputFile="${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}.dll" >\r
638 <argument value="${DLINK_FLAGS}"/>\r
639 <libset libs="${LIBS}"/>\r
640 <libset libs="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}Local.lib"/>\r
641 <libset libs="${DLINK_SPATH}" />\r
878ddf1f 642 <LINK.ARG/>\r
878ddf1f 643 </command>\r
644 </cc>\r
645 </sequential>\r
646 </OnDependency>\r
647 </sequential>\r
648 </macrodef>\r
649\r
650 <!--\r
651 EFI\r
652 -->\r
653 <macrodef name="GenEfi">\r
654 <attribute name="FILEPATH"/>\r
655 <attribute name="FILENAME"/>\r
656 <attribute name="FILEEXT" default="dll"/>\r
657\r
658 <sequential>\r
659 <OnDependency>\r
660 <sourcefiles>\r
22e0585c 661 <file name="${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>\r
878ddf1f 662 </sourcefiles>\r
663 <targetfiles>\r
22e0585c 664 <file name="${DEST_DIR_OUTPUT}/@{FILENAME}.efi"/>\r
878ddf1f 665 </targetfiles>\r
666\r
667 <sequential>\r
5fc17c92 668 <fwimage componentType="${MODULE_TYPE}" outImage="${DEST_DIR_OUTPUT}/@{FILENAME}.efi" \r
22e0585c 669 peImage="${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}" time="0"/>\r
878ddf1f 670 </sequential>\r
671 </OnDependency>\r
672 </sequential>\r
673 </macrodef>\r
674\r
675<!--\r
676 EFI_SECTION_FREEFORM_SUBTYPE_GUID\r
677 EFI_SECTION_VERSION\r
678 EFI_SECTION_USER_INTERFACE\r
679 EFI_SECTION_DXE_DEPEX\r
680 EFI_SECTION_PEI_DEPEX\r
681 EFI_SECTION_PE32\r
682 EFI_SECTION_PIC\r
683 EFI_SECTION_TE\r
684 EFI_SECTION_RAW\r
685 EFI_SECTION_COMPRESSION\r
686 EFI_SECTION_GUID_DEFINED\r
687 EFI_SECTION_COMPATIBILITY16\r
688 EFI_SECTION_FIRMWARE_VOLUME_IMAGE\r
689 -->\r
690 <!--\r
691 EFI_SECTION_PE32\r
692 -->\r
46dde08c
LG
693\r
694 <macrodef name="EFI_SECTION_TE">\r
695 <attribute name="FILEPATH"/>\r
696 <attribute name="FILENAME"/>\r
697 <attribute name="FILEEXT" default="" />\r
698\r
699 <element name="PRE.PROCESS" optional="yes"/>\r
700 <element name="POST.PROCESS" optional="yes"/>\r
701\r
702 <sequential>\r
703 <PRE.PROCESS/>\r
704 <if>\r
705 <not>\r
706 <equals arg1="${LIBS}" arg2=""/>\r
707 </not>\r
708\r
709 <then>\r
710 <GenDll FILEPATH="." FILENAME="@{FILENAME}" FILEEXT="">\r
711 <LIB.ARG></LIB.ARG>\r
712 <LINK.ARG></LINK.ARG>\r
713 </GenDll>\r
714\r
715 <GenEfi FILEPATH="." FILENAME="@{FILENAME}" FILEEXT="dll"/>\r
716 </then>\r
717 </if>\r
718\r
719 <OnDependency>\r
720 <sourcefiles>\r
721 <file name="${DEST_DIR_OUTPUT}/@{FILENAME}.efi"/>\r
722 </sourcefiles>\r
723 <targetfiles>\r
724 <file name="${DEST_DIR_OUTPUT}/@{FILENAME}.tes"/>\r
725 </targetfiles>\r
726\r
727 <sequential>\r
728 <copy file="${DEST_DIR_OUTPUT}/@{FILENAME}.efi" tofile="${BIN_DIR}/@{FILENAME}.efi" />\r
729 <copy file="${DEST_DIR_OUTPUT}/@{FILENAME}.efi" tofile="${DEST_DIR_DEBUG}/@{FILENAME}.efi" /> \r
730 <genteimage Dump="false" Verbose="false" OutputDir="" OutputFile="${DEST_DIR_OUTPUT}/@{FILENAME}.te" InputFile="${DEST_DIR_OUTPUT}/@{FILENAME}.efi"/>\r
46dde08c
LG
731 <copy file="${DEST_DIR_OUTPUT}/@{FILENAME}.te" tofile="${BIN_DIR}/@{FILENAME}.te" />\r
732 <gensection inputfile="${DEST_DIR_OUTPUT}/@{FILENAME}.te" \r
733 outputfile="${DEST_DIR_OUTPUT}/@{FILENAME}.tes" \r
734 sectiontype="EFI_SECTION_TE"/>\r
735 <POST.PROCESS/>\r
736 </sequential>\r
737 </OnDependency>\r
738 </sequential>\r
739 </macrodef>\r
740\r
878ddf1f 741 <macrodef name="EFI_SECTION_PE32">\r
742 <attribute name="FILEPATH"/>\r
743 <attribute name="FILENAME"/>\r
744 <attribute name="FILEEXT" default="" />\r
745\r
746 <element name="PRE.PROCESS" optional="yes"/>\r
747 <element name="POST.PROCESS" optional="yes"/>\r
748\r
749 <sequential>\r
750 <PRE.PROCESS/>\r
878ddf1f 751 <if>\r
752 <not>\r
5fc17c92 753 <!-- TBD ${OBJECTS} -->\r
754 <equals arg1="${LIBS}" arg2=""/>\r
878ddf1f 755 </not>\r
756\r
757 <then>\r
758 <GenDll FILEPATH="." FILENAME="@{FILENAME}" FILEEXT="">\r
759 <LIB.ARG></LIB.ARG>\r
760 <LINK.ARG></LINK.ARG>\r
761 </GenDll>\r
0fd9e137 762\r
878ddf1f 763 <GenEfi FILEPATH="." FILENAME="@{FILENAME}" FILEEXT="dll"/>\r
764 </then>\r
765 </if>\r
5fc17c92 766 \r
878ddf1f 767 <OnDependency>\r
768 <sourcefiles>\r
22e0585c 769 <file name="${DEST_DIR_OUTPUT}/@{FILENAME}.efi"/>\r
878ddf1f 770 </sourcefiles>\r
771 <targetfiles>\r
22e0585c 772 <file name="${DEST_DIR_OUTPUT}/@{FILENAME}.pe32"/>\r
878ddf1f 773 </targetfiles>\r
774\r
775 <sequential>\r
22e0585c 776 <copy file="${DEST_DIR_OUTPUT}/@{FILENAME}.efi" tofile="${BIN_DIR}/@{FILENAME}.efi" />\r
5fc17c92 777 \r
778 <gensection inputfile="${DEST_DIR_OUTPUT}/@{FILENAME}.efi" \r
779 outputfile="${DEST_DIR_OUTPUT}/@{FILENAME}.pe32" \r
878ddf1f 780 sectiontype="EFI_SECTION_PE32"/>\r
5fc17c92 781 \r
878ddf1f 782 <POST.PROCESS/>\r
783 </sequential>\r
784 </OnDependency>\r
5fc17c92 785 <copy file="${DEST_DIR_OUTPUT}/@{FILENAME}.efi" tofile="${DEST_DIR_DEBUG}/@{FILENAME}.efi" />\r
878ddf1f 786 </sequential>\r
787 </macrodef>\r
788\r
789 <!--\r
790 EFI_SECTION_VERSION\r
791 -->\r
792 <macrodef name="EFI_SECTION_VERSION">\r
793 <attribute name="FILEPATH"/>\r
794 <attribute name="FILENAME"/>\r
795 <attribute name="FILEEXT" default="" />\r
796 <attribute name="VERSION" default="0000"/>\r
797\r
798 <element name="PRE.PROCESS" optional="yes"/>\r
799 <element name="POST.PROCESS" optional="yes"/>\r
800\r
801 <sequential>\r
802 <if>\r
803 <not>\r
22e0585c 804 <available type="file" file="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.ver"/>\r
878ddf1f 805 </not>\r
806\r
807 <then>\r
808 <PRE.PROCESS/>\r
5fc17c92 809 <gensection outputfile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.ver" \r
878ddf1f 810 versionnum="@{VERSION}"\r
811 sectiontype="EFI_SECTION_VERSION"/>\r
812 <POST.PROCESS/>\r
813 </then>\r
814 </if>\r
815 </sequential>\r
816 </macrodef>\r
817\r
818 <!--\r
819 EFI_SECTION_USER_INTERFACE\r
820 -->\r
821 <macrodef name="EFI_SECTION_USER_INTERFACE">\r
822 <attribute name="FILEPATH"/>\r
823 <attribute name="FILENAME"/>\r
824 <attribute name="FILEEXT" default="" />\r
825 <attribute name="UI" default="${BASE_NAME}"/>\r
826\r
827 <element name="PRE.PROCESS" optional="yes"/>\r
828 <element name="POST.PROCESS" optional="yes"/>\r
829\r
830 <sequential>\r
831 <if>\r
832 <not>\r
22e0585c 833 <available type="file" file="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.ui"/>\r
878ddf1f 834 </not>\r
835\r
836 <then>\r
837 <PRE.PROCESS/>\r
838 <gensection interfacestring="@{UI}"\r
5fc17c92 839 outputfile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.ui" \r
878ddf1f 840 sectiontype="EFI_SECTION_USER_INTERFACE"/>\r
841 <POST.PROCESS/>\r
842 </then>\r
843 </if>\r
844 </sequential>\r
845 </macrodef>\r
846\r
878ddf1f 847 <!--\r
848 EFI_SECTION_DXE_DEPEX\r
849 -->\r
850 <macrodef name="EFI_SECTION_DXE_DEPEX">\r
851 <attribute name="FILEPATH"/>\r
852 <attribute name="FILENAME"/>\r
853 <attribute name="FILEEXT" default="dxs"/>\r
854\r
855 <element name="PRE.PROCESS" optional="yes"/>\r
856 <element name="POST.PROCESS" optional="yes"/>\r
857\r
858 <sequential>\r
859 <PRE.PROCESS/>\r
860\r
861 <if>\r
5fc17c92 862 <available type="file" file="${DEST_DIR_OUTPUT}/@{FILENAME}.depex"/>\r
878ddf1f 863 <then>\r
864 <OnDependency>\r
865 <sourcefiles>\r
5fc17c92 866 <file name="${DEST_DIR_OUTPUT}/@{FILENAME}.depex"/>\r
878ddf1f 867 </sourcefiles>\r
868 <targetfiles>\r
22e0585c 869 <file name="${DEST_DIR_OUTPUT}/@{FILENAME}.dpx"/>\r
878ddf1f 870 </targetfiles>\r
871 <sequential>\r
5fc17c92 872 <gensection inputfile="${DEST_DIR_OUTPUT}/@{FILENAME}.depex" \r
873 outputfile="${DEST_DIR_OUTPUT}/@{FILENAME}.dpx" \r
878ddf1f 874 sectiontype="EFI_SECTION_DXE_DEPEX"/>\r
875 </sequential>\r
876 </OnDependency>\r
877 </then>\r
878 <else>\r
879 <if>\r
880 <not>\r
22e0585c 881 <available type="file" file="${DEST_DIR_OUTPUT}/@{FILENAME}.dpx"/>\r
878ddf1f 882 </not>\r
883 <then>\r
22e0585c 884 <touch file="${DEST_DIR_OUTPUT}/@{FILENAME}.dpx"/>\r
878ddf1f 885 </then>\r
886 </if>\r
887 </else>\r
888 </if>\r
889\r
890 <POST.PROCESS/>\r
891 </sequential>\r
892 </macrodef>\r
893\r
894 <!--\r
895 EFI_SECTION_PEI_DEPEX\r
896 -->\r
897 <macrodef name="EFI_SECTION_PEI_DEPEX">\r
898 <attribute name="FILEPATH"/>\r
899 <attribute name="FILENAME"/>\r
900 <attribute name="FILEEXT" default="dxs"/>\r
901\r
902 <element name="PRE.PROCESS" optional="yes"/>\r
903 <element name="POST.PROCESS" optional="yes"/>\r
904 <sequential>\r
905 <PRE.PROCESS/>\r
906 <if>\r
5fc17c92 907 <available type="file" file="${DEST_DIR_OUTPUT}/@{FILENAME}.depex"/>\r
878ddf1f 908 <then>\r
909 <OnDependency>\r
910 <sourcefiles>\r
5fc17c92 911 <file name="${DEST_DIR_OUTPUT}/@{FILENAME}.depex"/>\r
878ddf1f 912 </sourcefiles>\r
913 <targetfiles>\r
22e0585c 914 <file name="${DEST_DIR_OUTPUT}/@{FILENAME}.dpx"/>\r
878ddf1f 915 </targetfiles>\r
916\r
917 <sequential>\r
5fc17c92 918 <gensection inputfile="${DEST_DIR_OUTPUT}/@{FILENAME}.depex" \r
919 outputfile="${DEST_DIR_OUTPUT}/@{FILENAME}.dpx" \r
878ddf1f 920 sectiontype="EFI_SECTION_PEI_DEPEX"/>\r
921 </sequential>\r
922 </OnDependency>\r
5fc17c92 923 \r
878ddf1f 924 </then>\r
925 <else>\r
926 <if>\r
927 <not>\r
22e0585c 928 <available type="file" file="${DEST_DIR_OUTPUT}/@{FILENAME}.dpx"/>\r
878ddf1f 929 </not>\r
930 <then>\r
22e0585c 931 <touch file="${DEST_DIR_OUTPUT}/@{FILENAME}.dpx"/>\r
878ddf1f 932 </then>\r
933 </if>\r
934 </else>\r
935 </if>\r
936 <POST.PROCESS/>\r
937 </sequential>\r
938 </macrodef>\r
939\r
878ddf1f 940\r
941 <!--\r
942 EFI_SECTION_RAW\r
943 -->\r
944 <macrodef name="EFI_SECTION_RAW">\r
945 <attribute name="FILEPATH"/>\r
946 <attribute name="FILENAME"/>\r
947 <attribute name="FILEEXT" default="bin"/>\r
948\r
949 <element name="PRE.PROCESS" optional="yes"/>\r
950 <element name="POST.PROCESS" optional="yes"/>\r
951\r
952 <sequential>\r
953 <OnDependency>\r
954 <sourcefiles>\r
22e0585c 955 <file name="${DEST_DIR_OUTPUT}/@{FILENAME}.@{FILEEXT}"/>\r
878ddf1f 956 </sourcefiles>\r
957 <targetfiles>\r
22e0585c 958 <file name="${DEST_DIR_OUTPUT}/@{FILENAME}.sec"/>\r
878ddf1f 959 </targetfiles>\r
960\r
961 <sequential>\r
962 <PRE.PROCESS/>\r
5fc17c92 963 <gensection inputfile="${DEST_DIR_OUTPUT}/@{FILENAME}.@{FILEEXT}" \r
964 outputfile="${DEST_DIR_OUTPUT}/@{FILENAME}.sec" \r
878ddf1f 965 sectiontype="EFI_SECTION_RAW"/>\r
966 <POST.PROCESS/>\r
967 </sequential>\r
968 </OnDependency>\r
969 </sequential>\r
970 </macrodef>\r
971\r
878ddf1f 972 <!--\r
973 EFI_SECTION_FIRMWARE_VOLUME_IMAGE\r
974 -->\r
975 <macrodef name="EFI_SECTION_FIRMWARE_VOLUME_IMAGE">\r
976 <attribute name="FILEPATH"/>\r
977 <attribute name="FILENAME"/>\r
978 <attribute name="FILEEXT" default="fv"/>\r
979\r
980 <element name="PRE.PROCESS" optional="yes"/>\r
981 <element name="POST.PROCESS" optional="yes"/>\r
982\r
983 <sequential>\r
984 <OnDependency>\r
985 <sourcefiles>\r
22e0585c 986 <file name="${FV_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>\r
878ddf1f 987 </sourcefiles>\r
988 <targetfiles>\r
22e0585c 989 <file name="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}fv.sec"/>\r
878ddf1f 990 </targetfiles>\r
991\r
992 <sequential>\r
993 <PRE.PROCESS/>\r
5fc17c92 994 \r
995 <copy file="${FV_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}" \r
996 tofile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}" \r
878ddf1f 997 overwrite="true"/>\r
5fc17c92 998 <gensection inputfile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}" \r
999 outputfile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}fv.sec" \r
878ddf1f 1000 sectiontype="EFI_SECTION_FIRMWARE_VOLUME_IMAGE"/>\r
5fc17c92 1001 \r
878ddf1f 1002 <POST.PROCESS/>\r
1003 </sequential>\r
1004 </OnDependency>\r
1005 </sequential>\r
1006 </macrodef>\r
1007\r
1008 <!--\r
1009 Binary\r
1010 -->\r
1011 <macrodef name="Build_Binary">\r
1012 <attribute name="FILEPATH"/>\r
1013 <attribute name="FILENAME"/>\r
1014 <attribute name="FILEEXT" default="bin"/>\r
1015\r
1016 <element name="EXTRA.INC" optional="yes"/>\r
1017 <element name="EXTRA.ARG" optional="yes"/>\r
1018\r
1019 <sequential>\r
5fc17c92 1020 <copy file="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}" \r
22e0585c 1021 tofile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.bin"/>\r
878ddf1f 1022 </sequential>\r
1023 </macrodef>\r
1024\r
1025 <!--\r
1026 Graphics (bmp, ...)\r
1027 -->\r
1028 <macrodef name="Build_Graphics">\r
1029 <attribute name="FILEPATH"/>\r
1030 <attribute name="FILENAME"/>\r
1031 <attribute name="FILEEXT" default="bmp"/>\r
1032\r
1033 <element name="EXTRA.INC" optional="yes"/>\r
1034 <element name="EXTRA.ARG" optional="yes"/>\r
1035\r
1036 <sequential>\r
5fc17c92 1037 <mkdir dir="${MODULE_DIR}/@{FILEPATH}" /> \r
1038 <copy file="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}" \r
22e0585c 1039 tofile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.bin"/>\r
878ddf1f 1040 </sequential>\r
5fc17c92 1041 </macrodef> \r
878ddf1f 1042 <macrodef name="Build_EFI">\r
1043 <attribute name="FILEPATH"/>\r
1044 <attribute name="FILENAME"/>\r
1045 <attribute name="FILEEXT" default="efi"/>\r
1046\r
1047 <element name="EXTRA.INC" optional="yes"/>\r
1048 <element name="EXTRA.ARG" optional="yes"/>\r
1049\r
1050 <sequential>\r
5fc17c92 1051 <mkdir dir="${MODULE_DIR}/@{FILEPATH}" /> \r
1052 <copy file="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}" \r
22e0585c 1053 tofile="${DEST_DIR_OUTPUT}/${BASE_NAME}.efi"/>\r
878ddf1f 1054 </sequential>\r
1055 </macrodef>\r
1056</project>\r