]> git.proxmox.com Git - mirror_edk2.git/blame - Tools/Conf/BuildMacro.xml
Final target.template file with embedded documentation. This file will only be used...
[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="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/ -->\r
251 <fileset casesensitive="off" file="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.i"/>\r
75d0c5b1 252 </command>\r
253 </cc>\r
254 </sequential>\r
255 </OnDependency>\r
75d0c5b1 256 </sequential>\r
df569f61 257 </macrodef>\r
258\r
259 <!--\r
260 Build GCC assembly code\r
261 -->\r
262 <macrodef name="Build_Gcc_Assembly">\r
263 <attribute name="FILEPATH"/>\r
264 <attribute name="FILENAME"/>\r
265 <attribute name="FILEEXT" default="asm"/>\r
266\r
267 <element name="EXTRA.INC.1" optional="yes"/>\r
268 <element name="EXTRA.ARG.1" optional="yes"/>\r
269\r
270 <sequential>\r
271 <var name="FILE_BASENAME" value="@{FILENAME}" />\r
272 <var name="FILE_PATH" value="@{FILEPATH}" />\r
273 <mkdir dir="${DEST_DIR_OUTPUT}/@{FILEPATH}"/>\r
274\r
275 <OnDependency>\r
276 <sourcefiles>\r
277 <file Name="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>\r
278 </sourcefiles>\r
279 <targetfiles>\r
280 <file Name="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj"/>\r
281 </targetfiles>\r
282\r
283 <sequential>\r
284 <cc userdefine="on">\r
285 <command type="PP" cmd="${PP}" workdir="${DEST_DIR_OUTPUT}/@{FILEPATH}" family="${PP_FAMILY}"\r
286 outputDelimiter="-o"\r
287 outputFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.i">\r
288 <EXTRA.INC.1/>\r
289 <argument value="${PP_FLAGS}"/>\r
290 <fileset casesensitive="off" file="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>\r
291 </command>\r
292 </cc>\r
293\r
294 <replaceregexp file="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.i"\r
295 match="^(#[^ ]* +1 +.*@{FILEPATH}/@{FILENAME}\.@{FILEEXT}&quot;).+\1"\r
296 replace="#"\r
297 flags="gs"/>\r
298 <replaceregexp file="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.i"\r
299 match="^(#[^ ]* .*)$"\r
300 replace="# \1"\r
301 byline="true"/>\r
302\r
303 <cc userdefine="on">\r
304 <command type="ASM" cmd="${ASM}" workdir="${DEST_DIR_OUTPUT}" family="${ASM_FAMILY}"\r
305 outputFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj">\r
306 <EXTRA.INC.1/>\r
307 \r
308 <argument value="${ASM_FLAGS}"/>\r
309 <EXTRA.ARG.1/>\r
310 \r
311 <!-- fileset casesensitive="off" file="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/ -->\r
312 <fileset casesensitive="off" file="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.i"/>\r
313 </command>\r
314 </cc>\r
315 </sequential>\r
316 </OnDependency>\r
317 </sequential>\r
75d0c5b1 318 </macrodef>\r
319\r
878ddf1f 320 <!--\r
321 IPF Assembly\r
322 -->\r
323 <macrodef name="Build_IPF_Assembly_Code">\r
324 <attribute name="FILEPATH"/>\r
325 <attribute name="FILENAME"/>\r
326 <attribute name="FILEEXT" default="s"/>\r
327\r
5fc17c92 328 <element name="EXTRA.INC.1" optional="yes"/>\r
329 <element name="EXTRA.ARG.1" optional="yes"/>\r
878ddf1f 330\r
331 <sequential>\r
22e0585c 332 <mkdir dir="${DEST_DIR_OUTPUT}/@{FILEPATH}"/>\r
878ddf1f 333\r
334 <if>\r
22e0585c 335 <available type="file" file="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj"/>\r
878ddf1f 336 <then>\r
22e0585c 337 <makedeps DepsFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}.dep">\r
338 <input file="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>\r
5fc17c92 339 <EXTRA.INC.1/>\r
878ddf1f 340 </makedeps>\r
341 </then>\r
342 </if>\r
343\r
344 <OnDependency>\r
345 <sourcefiles>\r
22e0585c 346 <file listfile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}.dep"/>\r
878ddf1f 347 </sourcefiles>\r
348 <targetfiles>\r
22e0585c 349 <file name="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj"/>\r
878ddf1f 350 </targetfiles>\r
351\r
352 <sequential>\r
878ddf1f 353 <cc userdefine="on">\r
cfa5a9c5 354 <command type="PP" cmd="${PP}" workdir="${DEST_DIR_OUTPUT}/@{FILEPATH}" family="${PP_FAMILY}">\r
5fc17c92 355 <EXTRA.INC.1/>\r
878ddf1f 356 <argument value="${PP_FLAGS}"/>\r
0fd9e137 357 <fileset casesensitive="off" file="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>\r
878ddf1f 358 </command>\r
359 </cc>\r
5fc17c92 360 \r
878ddf1f 361 <cc userdefine="on">\r
5fc17c92 362 <command type="ASM" cmd="${ASM}" workdir="${DEST_DIR_OUTPUT}" family="${ASM_FAMILY}"\r
363 includepathDelimiter="-I" outputDelimiter="-o"\r
364 outputFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj">\r
365 <EXTRA.INC.1/>\r
878ddf1f 366 <argument value="${ASM_FLAGS}"/>\r
5fc17c92 367 <EXTRA.ARG.1/>\r
368 <fileset casesensitive="off" file="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.i"/>\r
878ddf1f 369 </command>\r
370 </cc>\r
371 </sequential>\r
372 </OnDependency>\r
878ddf1f 373 </sequential>\r
374 </macrodef>\r
375\r
376\r
377 <macrodef name="Build_IPF_PP_Code">\r
378 <attribute name="FILEPATH"/>\r
379 <attribute name="FILENAME"/>\r
380 <attribute name="FILEEXT" default="i"/>\r
381\r
382 <element name="EXTRA.INC" optional="yes"/>\r
383 <element name="EXTRA.ARG" optional="yes"/>\r
384\r
385 <sequential>\r
22e0585c 386 <mkdir dir="${DEST_DIR_OUTPUT}/@{FILEPATH}"/>\r
5fc17c92 387 \r
878ddf1f 388 <cc userdefine="on">\r
389 <command type="ASM" includepathDelimiter="-I">\r
390 <includepath path="${WORKSPACE_DIR}"/>\r
391 <includepath path="${MODULE_DIR}"/>\r
22e0585c 392 <includepath path="${MODULE_DIR}/${ARCH}"/>\r
878ddf1f 393 <EXTRA.INC/>\r
5fc17c92 394 \r
878ddf1f 395 <argument value="${ASM_FLAGS}"/>\r
396 <EXTRA.ARG/>\r
22e0585c 397 <!-- <argument value="-o ${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj"/> -->\r
398 <OutputFile File="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj"/>\r
5fc17c92 399 \r
22e0585c 400 <fileset casesensitive="off" file="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>\r
878ddf1f 401 </command>\r
402 </cc>\r
878ddf1f 403 </sequential>\r
404 </macrodef>\r
5fc17c92 405 \r
406 \r
407 <!--\r
408 Library private HashMap map = new HashMap();\r
878ddf1f 409 -->\r
5fc17c92 410 <macrodef name="Build_Library">\r
411 <attribute name="FILENAME" />\r
412 <attribute name="FILEEXT" default="obj"/>\r
413 \r
414 <sequential>\r
415 <var name="FILE_BASENAME" value="@{FILENAME}" />\r
416 <var name="FILE_PATH" value="." />\r
417 <mkdir dir="${BIN_DIR}"/>\r
878ddf1f 418\r
5fc17c92 419 <OnDependency>\r
420 <sourcefiles>\r
421 <file list="${OBJECTS}"/>\r
422 </sourcefiles>\r
423 <targetfiles>\r
424 <file name="${BIN_DIR}/@{FILENAME}.lib"/>\r
425 </targetfiles>\r
878ddf1f 426\r
5fc17c92 427 <sequential>\r
428 <cc userdefine="on">\r
429 <command type="SLINK" cmd="${SLINK}" family="${SLINK_FAMILY}"\r
430 outputFile="${BIN_DIR}/@{FILENAME}.lib">\r
431 <argument value="${SLINK_FLAGS}"/>\r
878ddf1f 432\r
5fc17c92 433 <fileset casesensitive="off" dir="${DEST_DIR_OUTPUT}" includes="**/*.obj"/>\r
434 </command>\r
435 </cc>\r
436 </sequential>\r
437 </OnDependency>\r
878ddf1f 438 </sequential>\r
439 </macrodef>\r
440\r
441 <!--\r
442 Unicode -> .sdb\r
443 -->\r
5fc17c92 444 <macrodef name="Build_UNI">\r
878ddf1f 445 <attribute name="FILEPATH"/>\r
446 <attribute name="FILENAME"/>\r
447 <attribute name="FILEEXT" default="uni"/>\r
448\r
449 <element name="EXTRA.INC" optional="yes"/>\r
450 <element name="EXTRA.ARG" optional="yes"/>\r
451\r
452 <sequential>\r
22e0585c 453 <mkdir dir="${DEST_DIR_OUTPUT}/@{FILEPATH}"/>\r
878ddf1f 454\r
455 <OnDependency>\r
456 <sourcefiles>\r
22e0585c 457 <file name="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>\r
878ddf1f 458 </sourcefiles>\r
459 <targetfiles>\r
22e0585c 460 <file name="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.sdb"/>\r
878ddf1f 461 </targetfiles>\r
462\r
463 <sequential>\r
464 <strgather commandtype="parse" newdatabase="true">\r
22e0585c 465 <database name="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.sdb"/>\r
878ddf1f 466 <EXTRA.INC/>\r
467 <EXTRA.ARG/>\r
22e0585c 468 <inputfile name="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>\r
878ddf1f 469 </strgather>\r
470 </sequential>\r
471 </OnDependency>\r
472\r
5fc17c92 473 <var name="SDB_FILES" value="${SDB_FILES}, ${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.sdb"/>\r
878ddf1f 474 </sequential>\r
475 </macrodef>\r
476\r
477 <!--\r
478 .sdb(s) -> .c, .h -> .obj\r
479 -->\r
480 <macrodef name="Build_Unicode_Database">\r
481 <attribute name="FILEPATH"/>\r
482 <attribute name="FILENAME"/>\r
483 <attribute name="FILEEXT" default="sdb"/>\r
484\r
485 <element name="EXTRA.INC" optional="yes"/>\r
486 <element name="EXTRA.ARG" optional="yes"/>\r
487\r
488 <sequential>\r
5fc17c92 489 <var name="FILE_BASENAME" value="@{FILENAME}" />\r
490 <var name="FILE_PATH" value="@{FILEPATH}" />\r
878ddf1f 491 <OnDependency>\r
492 <sourcefiles>\r
493 <file list="${SDB_FILES}"/>\r
494 <file list="${SOURCE_FILES}"/>\r
495 </sourcefiles>\r
496 <targetfiles>\r
22e0585c 497 <file name="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.sdb"/>\r
878ddf1f 498 </targetfiles>\r
5fc17c92 499 \r
878ddf1f 500 <sequential>\r
22e0585c 501 <strgather commandtype="scan" outputdatabase="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.sdb" verbose="read">\r
878ddf1f 502 <skipext name=".uni"/>\r
503 <skipext name=".h"/>\r
504 <database list="${SDB_FILES}"/>\r
505 <inputfile name="${SOURCE_FILES}"/>\r
506 </strgather>\r
507 </sequential>\r
508 </OnDependency>\r
509\r
510 <OnDependency>\r
511 <sourcefiles>\r
22e0585c 512 <file name="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.sdb"/>\r
878ddf1f 513 </sourcefiles>\r
514 <targetfiles>\r
22e0585c 515 <file name="${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}StrDefs.h"/>\r
516 <file name="${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}Strings.hpk"/>\r
517 <file name="${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}Strings.c"/>\r
878ddf1f 518 </targetfiles>\r
5fc17c92 519 \r
878ddf1f 520 <sequential>\r
521 <strgather basename="@{FILENAME}Strings" commandtype="dump"\r
22e0585c 522 outputdefines="${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}StrDefs.h"\r
523 outputhpk="${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}Strings.hpk"\r
524 outputstring="${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}Strings.c">\r
525 <database name="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.sdb"/>\r
878ddf1f 526 </strgather>\r
527 </sequential>\r
528 </OnDependency>\r
529\r
530 <OnDependency>\r
531 <sourcefiles>\r
22e0585c 532 <file name="${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}Strings.c"/>\r
878ddf1f 533 </sourcefiles>\r
534 <targetfiles>\r
22e0585c 535 <file name="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}Strings.obj"/>\r
878ddf1f 536 </targetfiles>\r
5fc17c92 537 \r
878ddf1f 538 <sequential>\r
539 <cc userdefine="on">\r
5fc17c92 540 <command type="CC" cmd="${CC}" workdir="${DEST_DIR_OUTPUT}" family="${CC_FAMILY}"\r
541 includepathDelimiter="-I"\r
542 outputFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}Strings.obj">\r
878ddf1f 543 <argument value="${CC_FLAGS}"/>\r
5fc17c92 544 <EXTRA.INC />\r
22e0585c 545 <fileset casesensitive="off" file="${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}Strings.c"/>\r
878ddf1f 546 </command>\r
547 </cc>\r
548 </sequential>\r
549 </OnDependency>\r
550\r
878ddf1f 551 </sequential>\r
552 </macrodef>\r
553\r
554 <!--\r
555 Vfr\r
556 -->\r
5fc17c92 557 <macrodef name="Build_VFR">\r
878ddf1f 558 <attribute name="FILEPATH"/>\r
559 <attribute name="FILENAME"/>\r
560 <attribute name="FILEEXT" default="vfr"/>\r
561\r
562 <element name="EXTRA.INC" optional="yes"/>\r
563 <element name="EXTRA.ARG" optional="yes"/>\r
564\r
565 <sequential>\r
566 <mkdir dir="${DEST_DIR_DEBUG}/@{FILEPATH}"/>\r
567\r
568 <if>\r
22e0585c 569 <available type="file" file="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj"/>\r
878ddf1f 570 <then>\r
22e0585c 571 <makedeps DepsFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}.dep">\r
572 <input file="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>\r
878ddf1f 573 <EXTRA.INC/>\r
574 </makedeps>\r
575 </then>\r
576 </if>\r
577\r
578 <OnDependency>\r
579 <sourcefiles>\r
22e0585c 580 <file listfile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}.dep"/>\r
878ddf1f 581 </sourcefiles>\r
582 <targetfiles>\r
22e0585c 583 <file name="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj"/>\r
878ddf1f 584 </targetfiles>\r
585\r
586 <sequential>\r
136adffc 587 <vfrcompile createIfrBinFile="on" createListFile="on" outPutDir="${DEST_DIR_DEBUG}/@{FILEPATH}" vfrFile="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}">\r
878ddf1f 588 <EXTRA.INC/>\r
589 </vfrcompile>\r
5fc17c92 590 \r
878ddf1f 591 <cc userdefine="on">\r
5fc17c92 592 <command type="CC" cmd="${CC}" workdir="${DEST_DIR_OUTPUT}" \r
cfa5a9c5 593 includepathDelimiter="-I" family="${CC_FAMILY}"\r
5fc17c92 594 outputFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj" >\r
878ddf1f 595 <argument value="${CC_FLAGS}"/>\r
5fc17c92 596 <EXTRA.INC/>\r
878ddf1f 597 <EXTRA.ARG/>\r
22e0585c 598 <fileset casesensitive="off" file="${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}.c"/>\r
878ddf1f 599 </command>\r
600 </cc>\r
5fc17c92 601 <delete file="${PLATFORM_DIR}/@{FILENAME}.i" />\r
878ddf1f 602 </sequential>\r
603 </OnDependency>\r
878ddf1f 604 </sequential>\r
605 </macrodef>\r
606\r
607<!--############################################################################\r
608 Build Sections\r
609#############################################################################-->\r
610 <!--\r
611 DLL\r
612 -->\r
613 <macrodef name="GenDll">\r
614 <attribute name="FILEPATH"/>\r
615 <attribute name="FILENAME"/>\r
616 <attribute name="FILEEXT"/>\r
617\r
618 <element name="LIB.ARG" optional="yes"/>\r
619 <element name="LINK.ARG" optional="yes"/>\r
620\r
621 <sequential>\r
5fc17c92 622 <var name="FILE_BASENAME" value="@{FILENAME}" />\r
623 <var name="FILE_PATH" value="@{FILEPATH}" />\r
878ddf1f 624 <OnDependency>\r
625 <sourcefiles>\r
5fc17c92 626 <!--fileset casesensitive="off" dir="${DEST_DIR_OUTPUT}" includes="**/*.obj" /-->\r
878ddf1f 627 <file list="${LIBS}"/>\r
628 </sourcefiles>\r
629 <targetfiles>\r
22e0585c 630 <file name="${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}.dll"/>\r
878ddf1f 631 </targetfiles>\r
632\r
633 <sequential>\r
8b41e66e 634 <cc userdefine="on">\r
5fc17c92 635 <command type="SLINK" cmd="${SLINK}" family="${SLINK_FAMILY}"\r
636 outputFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}Local.lib">\r
637 <argument value="${SLINK_FLAGS}"/>\r
638\r
639 <fileset casesensitive="off" dir="${DEST_DIR_OUTPUT}" includes="**/*.obj"/>\r
8b41e66e 640 </command>\r
641 </cc>\r
878ddf1f 642 <cc userdefine="on">\r
5fc17c92 643 <command type="DLINK" cmd="${DLINK}" family="${DLINK_FAMILY}"\r
644 outputFile="${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}.dll" >\r
645 <argument value="${DLINK_FLAGS}"/>\r
646 <libset libs="${LIBS}"/>\r
647 <libset libs="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}Local.lib"/>\r
648 <libset libs="${DLINK_SPATH}" />\r
878ddf1f 649 <LINK.ARG/>\r
878ddf1f 650 </command>\r
651 </cc>\r
652 </sequential>\r
653 </OnDependency>\r
654 </sequential>\r
655 </macrodef>\r
656\r
657 <!--\r
658 EFI\r
659 -->\r
660 <macrodef name="GenEfi">\r
661 <attribute name="FILEPATH"/>\r
662 <attribute name="FILENAME"/>\r
663 <attribute name="FILEEXT" default="dll"/>\r
664\r
665 <sequential>\r
666 <OnDependency>\r
667 <sourcefiles>\r
22e0585c 668 <file name="${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>\r
878ddf1f 669 </sourcefiles>\r
670 <targetfiles>\r
22e0585c 671 <file name="${DEST_DIR_OUTPUT}/@{FILENAME}.efi"/>\r
878ddf1f 672 </targetfiles>\r
673\r
674 <sequential>\r
5fc17c92 675 <!-- -->\r
676 <fwimage componentType="${MODULE_TYPE}" outImage="${DEST_DIR_OUTPUT}/@{FILENAME}.efi" \r
22e0585c 677 peImage="${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}" time="0"/>\r
878ddf1f 678 </sequential>\r
679 </OnDependency>\r
680 </sequential>\r
681 </macrodef>\r
682\r
683<!--\r
684 EFI_SECTION_FREEFORM_SUBTYPE_GUID\r
685 EFI_SECTION_VERSION\r
686 EFI_SECTION_USER_INTERFACE\r
687 EFI_SECTION_DXE_DEPEX\r
688 EFI_SECTION_PEI_DEPEX\r
689 EFI_SECTION_PE32\r
690 EFI_SECTION_PIC\r
691 EFI_SECTION_TE\r
692 EFI_SECTION_RAW\r
693 EFI_SECTION_COMPRESSION\r
694 EFI_SECTION_GUID_DEFINED\r
695 EFI_SECTION_COMPATIBILITY16\r
696 EFI_SECTION_FIRMWARE_VOLUME_IMAGE\r
697 -->\r
698 <!--\r
699 EFI_SECTION_PE32\r
700 -->\r
46dde08c
LG
701\r
702 <macrodef name="EFI_SECTION_TE">\r
703 <attribute name="FILEPATH"/>\r
704 <attribute name="FILENAME"/>\r
705 <attribute name="FILEEXT" default="" />\r
706\r
707 <element name="PRE.PROCESS" optional="yes"/>\r
708 <element name="POST.PROCESS" optional="yes"/>\r
709\r
710 <sequential>\r
711 <PRE.PROCESS/>\r
712 <if>\r
713 <not>\r
714 <equals arg1="${LIBS}" arg2=""/>\r
715 </not>\r
716\r
717 <then>\r
718 <GenDll FILEPATH="." FILENAME="@{FILENAME}" FILEEXT="">\r
719 <LIB.ARG></LIB.ARG>\r
720 <LINK.ARG></LINK.ARG>\r
721 </GenDll>\r
722\r
723 <GenEfi FILEPATH="." FILENAME="@{FILENAME}" FILEEXT="dll"/>\r
724 </then>\r
725 </if>\r
726\r
727 <OnDependency>\r
728 <sourcefiles>\r
729 <file name="${DEST_DIR_OUTPUT}/@{FILENAME}.efi"/>\r
730 </sourcefiles>\r
731 <targetfiles>\r
732 <file name="${DEST_DIR_OUTPUT}/@{FILENAME}.tes"/>\r
733 </targetfiles>\r
734\r
735 <sequential>\r
736 <copy file="${DEST_DIR_OUTPUT}/@{FILENAME}.efi" tofile="${BIN_DIR}/@{FILENAME}.efi" />\r
737 <copy file="${DEST_DIR_OUTPUT}/@{FILENAME}.efi" tofile="${DEST_DIR_DEBUG}/@{FILENAME}.efi" /> \r
738 <genteimage Dump="false" Verbose="false" OutputDir="" OutputFile="${DEST_DIR_OUTPUT}/@{FILENAME}.te" InputFile="${DEST_DIR_OUTPUT}/@{FILENAME}.efi"/>\r
739 <!-- \r
740 <exec executable="${GENTEIMAGE}">\r
741 <arg line="-o ${DEST_DIR_OUTPUT}/@{FILENAME}.te ${DEST_DIR_OUTPUT}/@{FILENAME}.efi" />\r
742 </exec>\r
743 -->\r
744 <copy file="${DEST_DIR_OUTPUT}/@{FILENAME}.te" tofile="${BIN_DIR}/@{FILENAME}.te" />\r
745 <gensection inputfile="${DEST_DIR_OUTPUT}/@{FILENAME}.te" \r
746 outputfile="${DEST_DIR_OUTPUT}/@{FILENAME}.tes" \r
747 sectiontype="EFI_SECTION_TE"/>\r
748 <POST.PROCESS/>\r
749 </sequential>\r
750 </OnDependency>\r
751 </sequential>\r
752 </macrodef>\r
753\r
878ddf1f 754 <macrodef name="EFI_SECTION_PE32">\r
755 <attribute name="FILEPATH"/>\r
756 <attribute name="FILENAME"/>\r
757 <attribute name="FILEEXT" default="" />\r
758\r
759 <element name="PRE.PROCESS" optional="yes"/>\r
760 <element name="POST.PROCESS" optional="yes"/>\r
761\r
762 <sequential>\r
763 <PRE.PROCESS/>\r
878ddf1f 764 <if>\r
765 <not>\r
5fc17c92 766 <!-- TBD ${OBJECTS} -->\r
767 <equals arg1="${LIBS}" arg2=""/>\r
878ddf1f 768 </not>\r
769\r
770 <then>\r
771 <GenDll FILEPATH="." FILENAME="@{FILENAME}" FILEEXT="">\r
772 <LIB.ARG></LIB.ARG>\r
773 <LINK.ARG></LINK.ARG>\r
774 </GenDll>\r
0fd9e137 775\r
878ddf1f 776 <GenEfi FILEPATH="." FILENAME="@{FILENAME}" FILEEXT="dll"/>\r
777 </then>\r
778 </if>\r
5fc17c92 779 \r
878ddf1f 780 <OnDependency>\r
781 <sourcefiles>\r
22e0585c 782 <file name="${DEST_DIR_OUTPUT}/@{FILENAME}.efi"/>\r
878ddf1f 783 </sourcefiles>\r
784 <targetfiles>\r
22e0585c 785 <file name="${DEST_DIR_OUTPUT}/@{FILENAME}.pe32"/>\r
878ddf1f 786 </targetfiles>\r
787\r
788 <sequential>\r
22e0585c 789 <copy file="${DEST_DIR_OUTPUT}/@{FILENAME}.efi" tofile="${BIN_DIR}/@{FILENAME}.efi" />\r
5fc17c92 790 \r
791 <gensection inputfile="${DEST_DIR_OUTPUT}/@{FILENAME}.efi" \r
792 outputfile="${DEST_DIR_OUTPUT}/@{FILENAME}.pe32" \r
878ddf1f 793 sectiontype="EFI_SECTION_PE32"/>\r
5fc17c92 794 \r
878ddf1f 795 <POST.PROCESS/>\r
796 </sequential>\r
797 </OnDependency>\r
5fc17c92 798 <copy file="${DEST_DIR_OUTPUT}/@{FILENAME}.efi" tofile="${DEST_DIR_DEBUG}/@{FILENAME}.efi" />\r
878ddf1f 799 </sequential>\r
800 </macrodef>\r
801\r
802 <!--\r
803 EFI_SECTION_VERSION\r
804 -->\r
805 <macrodef name="EFI_SECTION_VERSION">\r
806 <attribute name="FILEPATH"/>\r
807 <attribute name="FILENAME"/>\r
808 <attribute name="FILEEXT" default="" />\r
809 <attribute name="VERSION" default="0000"/>\r
810\r
811 <element name="PRE.PROCESS" optional="yes"/>\r
812 <element name="POST.PROCESS" optional="yes"/>\r
813\r
814 <sequential>\r
815 <if>\r
816 <not>\r
22e0585c 817 <available type="file" file="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.ver"/>\r
878ddf1f 818 </not>\r
819\r
820 <then>\r
821 <PRE.PROCESS/>\r
5fc17c92 822 <gensection outputfile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.ver" \r
878ddf1f 823 versionnum="@{VERSION}"\r
824 sectiontype="EFI_SECTION_VERSION"/>\r
825 <POST.PROCESS/>\r
826 </then>\r
827 </if>\r
828 </sequential>\r
829 </macrodef>\r
830\r
831 <!--\r
832 EFI_SECTION_USER_INTERFACE\r
833 -->\r
834 <macrodef name="EFI_SECTION_USER_INTERFACE">\r
835 <attribute name="FILEPATH"/>\r
836 <attribute name="FILENAME"/>\r
837 <attribute name="FILEEXT" default="" />\r
838 <attribute name="UI" default="${BASE_NAME}"/>\r
839\r
840 <element name="PRE.PROCESS" optional="yes"/>\r
841 <element name="POST.PROCESS" optional="yes"/>\r
842\r
843 <sequential>\r
844 <if>\r
845 <not>\r
22e0585c 846 <available type="file" file="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.ui"/>\r
878ddf1f 847 </not>\r
848\r
849 <then>\r
850 <PRE.PROCESS/>\r
851 <gensection interfacestring="@{UI}"\r
5fc17c92 852 outputfile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.ui" \r
878ddf1f 853 sectiontype="EFI_SECTION_USER_INTERFACE"/>\r
854 <POST.PROCESS/>\r
855 </then>\r
856 </if>\r
857 </sequential>\r
858 </macrodef>\r
859\r
860 <!--\r
861 EFI_SECTION_FREEFORM_SUBTYPE_GUID\r
862 <macrodef name="EFI_SECTION_FREEFORM_SUBTYPE_GUID">\r
863 <attribute name="FILEPATH"/>\r
864 <attribute name="FILENAME"/>\r
865 <attribute name="FILEEXT" default=""/>\r
5fc17c92 866 \r
878ddf1f 867 <element name="EXTRA.INC" optional="yes"/>\r
868 <element name="EXTRA.ARG" optional="yes"/>\r
5fc17c92 869 \r
878ddf1f 870 <sequential>\r
5fc17c92 871 <gensection inputfile="" \r
872 outputfile="" \r
878ddf1f 873 sectiontype="EFI_SECTION_FREEFORM_SUBTYPE_GUID"/>\r
874 </sequential>\r
875 </macrodef>\r
876 -->\r
877\r
878 <!--\r
879 EFI_SECTION_DXE_DEPEX\r
880 -->\r
881 <macrodef name="EFI_SECTION_DXE_DEPEX">\r
882 <attribute name="FILEPATH"/>\r
883 <attribute name="FILENAME"/>\r
884 <attribute name="FILEEXT" default="dxs"/>\r
885\r
886 <element name="PRE.PROCESS" optional="yes"/>\r
887 <element name="POST.PROCESS" optional="yes"/>\r
888\r
889 <sequential>\r
890 <PRE.PROCESS/>\r
891\r
892 <if>\r
5fc17c92 893 <available type="file" file="${DEST_DIR_OUTPUT}/@{FILENAME}.depex"/>\r
878ddf1f 894 <then>\r
895 <OnDependency>\r
896 <sourcefiles>\r
5fc17c92 897 <file name="${DEST_DIR_OUTPUT}/@{FILENAME}.depex"/>\r
878ddf1f 898 </sourcefiles>\r
899 <targetfiles>\r
22e0585c 900 <file name="${DEST_DIR_OUTPUT}/@{FILENAME}.dpx"/>\r
878ddf1f 901 </targetfiles>\r
902 <sequential>\r
5fc17c92 903 <gensection inputfile="${DEST_DIR_OUTPUT}/@{FILENAME}.depex" \r
904 outputfile="${DEST_DIR_OUTPUT}/@{FILENAME}.dpx" \r
878ddf1f 905 sectiontype="EFI_SECTION_DXE_DEPEX"/>\r
906 </sequential>\r
907 </OnDependency>\r
908 </then>\r
909 <else>\r
910 <if>\r
911 <not>\r
22e0585c 912 <available type="file" file="${DEST_DIR_OUTPUT}/@{FILENAME}.dpx"/>\r
878ddf1f 913 </not>\r
914 <then>\r
22e0585c 915 <touch file="${DEST_DIR_OUTPUT}/@{FILENAME}.dpx"/>\r
878ddf1f 916 </then>\r
917 </if>\r
918 </else>\r
919 </if>\r
920\r
921 <POST.PROCESS/>\r
922 </sequential>\r
923 </macrodef>\r
924\r
925 <!--\r
926 EFI_SECTION_PEI_DEPEX\r
927 -->\r
928 <macrodef name="EFI_SECTION_PEI_DEPEX">\r
929 <attribute name="FILEPATH"/>\r
930 <attribute name="FILENAME"/>\r
931 <attribute name="FILEEXT" default="dxs"/>\r
932\r
933 <element name="PRE.PROCESS" optional="yes"/>\r
934 <element name="POST.PROCESS" optional="yes"/>\r
935 <sequential>\r
936 <PRE.PROCESS/>\r
937 <if>\r
5fc17c92 938 <available type="file" file="${DEST_DIR_OUTPUT}/@{FILENAME}.depex"/>\r
878ddf1f 939 <then>\r
940 <OnDependency>\r
941 <sourcefiles>\r
5fc17c92 942 <file name="${DEST_DIR_OUTPUT}/@{FILENAME}.depex"/>\r
878ddf1f 943 </sourcefiles>\r
944 <targetfiles>\r
22e0585c 945 <file name="${DEST_DIR_OUTPUT}/@{FILENAME}.dpx"/>\r
878ddf1f 946 </targetfiles>\r
947\r
948 <sequential>\r
5fc17c92 949 <gensection inputfile="${DEST_DIR_OUTPUT}/@{FILENAME}.depex" \r
950 outputfile="${DEST_DIR_OUTPUT}/@{FILENAME}.dpx" \r
878ddf1f 951 sectiontype="EFI_SECTION_PEI_DEPEX"/>\r
952 </sequential>\r
953 </OnDependency>\r
5fc17c92 954 \r
878ddf1f 955 </then>\r
956 <else>\r
957 <if>\r
958 <not>\r
22e0585c 959 <available type="file" file="${DEST_DIR_OUTPUT}/@{FILENAME}.dpx"/>\r
878ddf1f 960 </not>\r
961 <then>\r
22e0585c 962 <touch file="${DEST_DIR_OUTPUT}/@{FILENAME}.dpx"/>\r
878ddf1f 963 </then>\r
964 </if>\r
965 </else>\r
966 </if>\r
967 <POST.PROCESS/>\r
968 </sequential>\r
969 </macrodef>\r
970\r
971 <!--\r
972 EFI_SECTION_PIC\r
973 <macrodef name="EFI_SECTION_PIC">\r
974 <attribute name="FILEPATH"/>\r
975 <attribute name="FILENAME"/>\r
976 <attribute name="FILEEXT" default=""/>\r
5fc17c92 977 \r
878ddf1f 978 <element name="EXTRA.INC" optional="yes"/>\r
979 <element name="EXTRA.ARG" optional="yes"/>\r
5fc17c92 980 \r
878ddf1f 981 <sequential>\r
5fc17c92 982 <gensection inputfile="${BIN_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}" \r
983 outputfile="${BIN_DIR}/@{FILENAME}.pe32" \r
878ddf1f 984 sectiontype="EFI_SECTION_PIC"/>\r
985 </sequential>\r
986 </macrodef>\r
987 -->\r
988\r
a2d0e909 989 <!-- \r
878ddf1f 990 EFI_SECTION_TE\r
a2d0e909 991 -->\r
a2d0e909 992\r
878ddf1f 993\r
994 <!--\r
995 EFI_SECTION_RAW\r
996 -->\r
997 <macrodef name="EFI_SECTION_RAW">\r
998 <attribute name="FILEPATH"/>\r
999 <attribute name="FILENAME"/>\r
1000 <attribute name="FILEEXT" default="bin"/>\r
1001\r
1002 <element name="PRE.PROCESS" optional="yes"/>\r
1003 <element name="POST.PROCESS" optional="yes"/>\r
1004\r
1005 <sequential>\r
1006 <OnDependency>\r
1007 <sourcefiles>\r
22e0585c 1008 <file name="${DEST_DIR_OUTPUT}/@{FILENAME}.@{FILEEXT}"/>\r
878ddf1f 1009 </sourcefiles>\r
1010 <targetfiles>\r
22e0585c 1011 <file name="${DEST_DIR_OUTPUT}/@{FILENAME}.sec"/>\r
878ddf1f 1012 </targetfiles>\r
1013\r
1014 <sequential>\r
1015 <PRE.PROCESS/>\r
5fc17c92 1016 <gensection inputfile="${DEST_DIR_OUTPUT}/@{FILENAME}.@{FILEEXT}" \r
1017 outputfile="${DEST_DIR_OUTPUT}/@{FILENAME}.sec" \r
878ddf1f 1018 sectiontype="EFI_SECTION_RAW"/>\r
1019 <POST.PROCESS/>\r
1020 </sequential>\r
1021 </OnDependency>\r
1022 </sequential>\r
1023 </macrodef>\r
1024\r
878ddf1f 1025 <!--\r
1026 EFI_SECTION_FIRMWARE_VOLUME_IMAGE\r
1027 -->\r
1028 <macrodef name="EFI_SECTION_FIRMWARE_VOLUME_IMAGE">\r
1029 <attribute name="FILEPATH"/>\r
1030 <attribute name="FILENAME"/>\r
1031 <attribute name="FILEEXT" default="fv"/>\r
1032\r
1033 <element name="PRE.PROCESS" optional="yes"/>\r
1034 <element name="POST.PROCESS" optional="yes"/>\r
1035\r
1036 <sequential>\r
1037 <OnDependency>\r
1038 <sourcefiles>\r
22e0585c 1039 <file name="${FV_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>\r
878ddf1f 1040 </sourcefiles>\r
1041 <targetfiles>\r
22e0585c 1042 <file name="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}fv.sec"/>\r
878ddf1f 1043 </targetfiles>\r
1044\r
1045 <sequential>\r
1046 <PRE.PROCESS/>\r
5fc17c92 1047 \r
1048 <copy file="${FV_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}" \r
1049 tofile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}" \r
878ddf1f 1050 overwrite="true"/>\r
5fc17c92 1051 <gensection inputfile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}" \r
1052 outputfile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}fv.sec" \r
878ddf1f 1053 sectiontype="EFI_SECTION_FIRMWARE_VOLUME_IMAGE"/>\r
5fc17c92 1054 \r
878ddf1f 1055 <POST.PROCESS/>\r
1056 </sequential>\r
1057 </OnDependency>\r
1058 </sequential>\r
1059 </macrodef>\r
1060\r
1061 <!--\r
1062 Binary\r
1063 -->\r
1064 <macrodef name="Build_Binary">\r
1065 <attribute name="FILEPATH"/>\r
1066 <attribute name="FILENAME"/>\r
1067 <attribute name="FILEEXT" default="bin"/>\r
1068\r
1069 <element name="EXTRA.INC" optional="yes"/>\r
1070 <element name="EXTRA.ARG" optional="yes"/>\r
1071\r
1072 <sequential>\r
5fc17c92 1073 <copy file="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}" \r
22e0585c 1074 tofile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.bin"/>\r
878ddf1f 1075 </sequential>\r
1076 </macrodef>\r
1077\r
1078 <!--\r
1079 Graphics (bmp, ...)\r
1080 -->\r
1081 <macrodef name="Build_Graphics">\r
1082 <attribute name="FILEPATH"/>\r
1083 <attribute name="FILENAME"/>\r
1084 <attribute name="FILEEXT" default="bmp"/>\r
1085\r
1086 <element name="EXTRA.INC" optional="yes"/>\r
1087 <element name="EXTRA.ARG" optional="yes"/>\r
1088\r
1089 <sequential>\r
5fc17c92 1090 <mkdir dir="${MODULE_DIR}/@{FILEPATH}" /> \r
1091 <copy file="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}" \r
22e0585c 1092 tofile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.bin"/>\r
878ddf1f 1093 </sequential>\r
5fc17c92 1094 </macrodef> \r
878ddf1f 1095 <macrodef name="Build_EFI">\r
1096 <attribute name="FILEPATH"/>\r
1097 <attribute name="FILENAME"/>\r
1098 <attribute name="FILEEXT" default="efi"/>\r
1099\r
1100 <element name="EXTRA.INC" optional="yes"/>\r
1101 <element name="EXTRA.ARG" optional="yes"/>\r
1102\r
1103 <sequential>\r
5fc17c92 1104 <mkdir dir="${MODULE_DIR}/@{FILEPATH}" /> \r
1105 <copy file="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}" \r
22e0585c 1106 tofile="${DEST_DIR_OUTPUT}/${BASE_NAME}.efi"/>\r
878ddf1f 1107 </sequential>\r
1108 </macrodef>\r
1109</project>\r