]> git.proxmox.com Git - mirror_edk2.git/blame - Tools/Conf/BuildMacro.xml
Moved the function prototype of SetVirtualAddress and ExitBootService to AutoGen...
[mirror_edk2.git] / Tools / Conf / BuildMacro.xml
CommitLineData
62f022cc 1<?xml version="1.0" encoding="UTF-8"?>\r
878ddf1f 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
88f858a1 13 <!--\r
14 Macro for intialize some properties. This Macro build will be called before source file build. \r
15 -->\r
16 <macrodef name="Build_Init">\r
1549f516 17 <element name="EXTRA.INC" optional="yes"/>\r
18 <element name="EXTRA.ARG" optional="yes"/>\r
19 \r
88f858a1 20 <sequential>\r
21 <var name="OBJECTS" value="" />\r
22 <var name="SDB_FILES" value="" />\r
1549f516 23\r
41ac48e9 24 <mkdir dir="${DEST_DIR_DEBUG}"/>\r
25 <mkdir dir="${DEST_DIR_OUTPUT}"/>\r
26\r
1549f516 27 <if>\r
fd6c41f5 28 <and>\r
29 <isset property="PCH"/>\r
30 <not>\r
31 <equals arg1="${PCH}" arg2=""/>\r
32 </not>\r
33 </and>\r
1549f516 34 <then>\r
a387de3b 35 <makedeps DepsFile="${DEST_DIR_OUTPUT}/AutoGen.h.dep" \r
36 TargetFile="${DEST_DIR_OUTPUT}/AutoGen.h.gch">\r
37 <input file="${DEST_DIR_DEBUG}/AutoGen.h"/>\r
38 <EXTRA.INC/>\r
39 </makedeps>\r
1549f516 40 \r
41 <OnDependency>\r
42 <sourcefiles>\r
43 <file ListFile="${DEST_DIR_OUTPUT}/AutoGen.h.dep"/>\r
44 </sourcefiles>\r
45 <targetfiles>\r
46 <file Name="${DEST_DIR_OUTPUT}/AutoGen.h.gch"/>\r
47 </targetfiles>\r
48 \r
49 <sequential>\r
50 <!-- Generate pre-compiled header -->\r
51 <cc userdefine="on">\r
52 <command type="CC" cmd="${PCH}" workdir="${DEST_DIR_OUTPUT}" family="${CC_FAMILY}"\r
877de749 53 outputFile="${DEST_DIR_OUTPUT}/AutoGen.h.obj" dpath="${CC_DPATH}" libpath="${CC_LIBPATH}" \r
54 include="${CC_INCLUDEPATH}">\r
1549f516 55 <EXTRA.INC/>\r
56 <argument value="${PCH_FLAGS}"/>\r
57 <EXTRA.ARG/>\r
58 <fileset casesensitive="on" file="${DEST_DIR_DEBUG}/AutoGen.h"/>\r
59 </command>\r
60 </cc>\r
61\r
62 <if>\r
63 <equals arg1="${CC_FAMILY}" arg2="GCC"/>\r
64 <then>\r
aba23ad9 65 <move file="${DEST_DIR_OUTPUT}/AutoGen.h.obj" tofile="${DEST_DIR_DEBUG}/AutoGen.h.gch" overwrite="true"/>\r
1549f516 66 </then>\r
1549f516 67 </if>\r
68 </sequential>\r
69 </OnDependency>\r
aba23ad9 70\r
71 <if>\r
72 <not>\r
73 <equals arg1="${CC_FAMILY}" arg2="GCC"/>\r
74 </not>\r
75 <then>\r
76 <var name="OBJECTS" value="${OBJECTS} AutoGen.h.obj"/>\r
77 </then>\r
78 </if>\r
1549f516 79 </then>\r
e1b95c15 80 <else>\r
81 <makedeps DepsFile="${DEST_DIR_OUTPUT}/AutoGen.h.dep">\r
82 <input file="${DEST_DIR_DEBUG}/AutoGen.h"/>\r
83 <EXTRA.INC/>\r
84 </makedeps>\r
85 </else>\r
1549f516 86 </if>\r
88f858a1 87 </sequential>\r
88 </macrodef>\r
89\r
90\r
878ddf1f 91 <!--\r
92 macro definitions for building files with different types\r
93 -->\r
94 <!--\r
95 C Code\r
96 -->\r
5fc17c92 97 <macrodef name="Build_CCode">\r
878ddf1f 98 <attribute name="FILEPATH"/>\r
99 <attribute name="FILENAME"/>\r
100 <attribute name="FILEEXT" default="c"/>\r
5fc17c92 101 \r
878ddf1f 102 <element name="EXTRA.INC" optional="yes"/>\r
103 <element name="EXTRA.ARG" optional="yes"/>\r
5fc17c92 104 \r
878ddf1f 105 <sequential>\r
5fc17c92 106 <var name="FILE_BASENAME" value="@{FILENAME}" />\r
107 <var name="FILE_PATH" value="@{FILEPATH}" />\r
22e0585c 108 <mkdir dir="${DEST_DIR_OUTPUT}/@{FILEPATH}"/>\r
878ddf1f 109\r
a387de3b 110 <makedeps DepsFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}.dep"\r
111 TargetFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj">\r
112 <input file="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>\r
113 <EXTRA.INC/>\r
114 </makedeps>\r
878ddf1f 115\r
116 <OnDependency>\r
117 <sourcefiles>\r
22e0585c 118 <file ListFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}.dep"/>\r
a387de3b 119 <file ListFile="${DEST_DIR_OUTPUT}/AutoGen.h.dep"/>\r
878ddf1f 120 </sourcefiles>\r
121 <targetfiles>\r
22e0585c 122 <file Name="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj"/>\r
878ddf1f 123 </targetfiles>\r
124\r
125 <sequential>\r
126 <cc userdefine="on">\r
5fc17c92 127 <command type="CC" cmd="${CC}" workdir="${DEST_DIR_OUTPUT}" family="${CC_FAMILY}"\r
877de749 128 outputFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj" dpath="${CC_DPATH}" \r
129 libpath="${CC_LIBPATH}" include="${CC_INCLUDEPATH}">\r
878ddf1f 130 <EXTRA.INC/>\r
1549f516 131 <argument value="${CC_FLAGS}"/>\r
878ddf1f 132 <EXTRA.ARG/>\r
3fc9d866 133 <fileset casesensitive="on" file="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>\r
878ddf1f 134 </command>\r
135 </cc>\r
136 </sequential>\r
137 </OnDependency>\r
32a47954 138 <!-- Since fileset can't scan file start with ./, remove ./ in previous. -->\r
139 <if>\r
140 <equals arg1="@{FILEPATH}" arg2="." />\r
141 <then>\r
142 <var name="OBJECTS" value="${OBJECTS} @{FILENAME}.obj" />\r
143 </then>\r
144 <else>\r
145 <var name="OBJECTS" value="${OBJECTS} @{FILEPATH}/@{FILENAME}.obj" />\r
146 </else>\r
147 </if>\r
878ddf1f 148 </sequential>\r
149 </macrodef>\r
150\r
151\r
152 <macrodef name="Build_AUTOGEN">\r
153 <attribute name="FILEPATH"/>\r
154 <attribute name="FILENAME"/>\r
155 <attribute name="FILEEXT" default="c"/>\r
156\r
157 <element name="EXTRA.INC" optional="yes"/>\r
158 <element name="EXTRA.ARG" optional="yes"/>\r
159\r
160 <sequential>\r
5fc17c92 161 <var name="FILE_BASENAME" value="@{FILENAME}" />\r
162 <var name="FILE_PATH" value="@{FILEPATH}" />\r
22e0585c 163 <mkdir dir="${DEST_DIR_OUTPUT}/@{FILEPATH}"/>\r
878ddf1f 164\r
a387de3b 165 <makedeps DepsFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}.dep"\r
166 TargetFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj">\r
167 <input file="${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>\r
168 <EXTRA.INC/>\r
169 </makedeps>\r
878ddf1f 170\r
171 <OnDependency>\r
172 <sourcefiles>\r
22e0585c 173 <file ListFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}.dep"/>\r
a387de3b 174 <file ListFile="${DEST_DIR_OUTPUT}/AutoGen.h.dep"/>\r
878ddf1f 175 </sourcefiles>\r
176 <targetfiles>\r
22e0585c 177 <file Name="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj"/>\r
878ddf1f 178 </targetfiles>\r
179\r
180 <sequential>\r
181 <cc userdefine="on">\r
5fc17c92 182 <command type="CC" cmd="${CC}" workdir="${DEST_DIR_OUTPUT}" family="${CC_FAMILY}"\r
877de749 183 outputFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj" dpath="${CC_DPATH}"\r
184 libpath="${CC_LIBPATH}" include="${CC_INCLUDEPATH}">\r
878ddf1f 185 <EXTRA.INC/>\r
1549f516 186 <argument value="${CC_FLAGS}"/>\r
878ddf1f 187 <EXTRA.ARG/>\r
3fc9d866 188 <fileset casesensitive="on" file="${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>\r
878ddf1f 189 </command>\r
190 </cc>\r
191 </sequential>\r
192 </OnDependency>\r
32a47954 193 <!-- Since fileset can't scan file start with ./, remove ./ in previous. -->\r
194 <if>\r
195 <equals arg1="@{FILEPATH}" arg2="." />\r
196 <then>\r
197 <var name="OBJECTS" value="${OBJECTS} @{FILENAME}.obj" />\r
198 </then>\r
199 <else>\r
200 <var name="OBJECTS" value="${OBJECTS} @{FILEPATH}/@{FILENAME}.obj" />\r
201 </else>\r
202 </if>\r
878ddf1f 203 </sequential>\r
204 </macrodef>\r
205\r
5fc17c92 206 <macrodef name="Build_DPX">\r
878ddf1f 207 <attribute name="FILEPATH"/>\r
208 <attribute name="FILENAME"/>\r
209 <attribute name="FILEEXT" default="dxs"/>\r
210\r
211 <element name="EXTRA.INC" optional="yes"/>\r
212 <element name="EXTRA.ARG" optional="yes"/>\r
5fc17c92 213 \r
878ddf1f 214\r
215 <sequential>\r
5fc17c92 216 <var name="FILE_BASENAME" value="@{FILENAME}" />\r
217 <var name="FILE_PATH" value="@{FILEPATH}" />\r
22e0585c 218 <mkdir dir="${DEST_DIR_OUTPUT}/@{FILEPATH}"/>\r
878ddf1f 219\r
220 <OnDependency>\r
221 <sourcefiles>\r
22e0585c 222 <file name="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>\r
878ddf1f 223 </sourcefiles>\r
224 <targetfiles>\r
5fc17c92 225 <file name="${DEST_DIR_OUTPUT}/${BASE_NAME}.depex"/>\r
878ddf1f 226 </targetfiles>\r
227\r
228 <sequential>\r
878ddf1f 229 <cc userdefine="on">\r
df569f61 230 <command type="CC" cmd="${CC}" workdir="${DEST_DIR_OUTPUT}/@{FILEPATH}" family="${CC_FAMILY}"\r
877de749 231 outputFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.i" dpath="${CC_DPATH}"\r
232 libpath="${CC_LIBPATH}" include="${CC_INCLUDEPATH}">\r
878ddf1f 233 <EXTRA.INC/>\r
234 <argument value="${PP_FLAGS}"/>\r
3fc9d866 235 <fileset casesensitive="on" file="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>\r
878ddf1f 236 </command>\r
237 </cc>\r
5fc17c92 238 \r
df569f61 239 <gendepex inputFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.i" outputFile="${DEST_DIR_OUTPUT}/${BASE_NAME}.depex"/>\r
878ddf1f 240 </sequential>\r
241 </OnDependency>\r
242 </sequential>\r
243 </macrodef>\r
5fc17c92 244 \r
245 <macrodef name="Build_ASM">\r
878ddf1f 246 <attribute name="FILEPATH"/>\r
247 <attribute name="FILENAME"/>\r
248 <attribute name="FILEEXT" default="asm"/>\r
249\r
250 <element name="EXTRA.INC" optional="yes"/>\r
251 <element name="EXTRA.ARG" optional="yes"/>\r
5fc17c92 252 \r
253 <!-- Dispath ASM file, there are three type. \r
df569f61 254 asm - Build_Assembly\r
255 S - Build_Gcc_Assembly\r
256 s - Build_Ipf_Assembly -->\r
878ddf1f 257 <sequential>\r
5fc17c92 258 <if>\r
df569f61 259 <equals arg1="@{FILEEXT}" arg2="asm" />\r
5fc17c92 260 <then>\r
261 <Build_Assembly FILEPATH="@{FILEPATH}" FILENAME="@{FILENAME}" FILEEXT="@{FILEEXT}">\r
262 <EXTRA.INC.1><EXTRA.INC /></EXTRA.INC.1>\r
263 <EXTRA.ARG.1><EXTRA.ARG /></EXTRA.ARG.1>\r
264 </Build_Assembly>\r
265 </then>\r
df569f61 266 <elseif>\r
267 <equals arg1="@{FILEEXT}" arg2="S" />\r
268 <then>\r
269 <Build_Gcc_Assembly FILEPATH="@{FILEPATH}" FILENAME="@{FILENAME}" FILEEXT="@{FILEEXT}">\r
270 <EXTRA.INC.1><EXTRA.INC /></EXTRA.INC.1>\r
271 <EXTRA.ARG.1><EXTRA.ARG /></EXTRA.ARG.1>\r
272 </Build_Gcc_Assembly>\r
273 </then>\r
274 </elseif>\r
5fc17c92 275 <elseif>\r
25832ed3 276 <equals arg1="@{FILEEXT}" arg2="s" />\r
5fc17c92 277 <then>\r
278 <Build_IPF_Assembly_Code FILEPATH="@{FILEPATH}" FILENAME="@{FILENAME}" FILEEXT="@{FILEEXT}">\r
279 <EXTRA.INC.1><EXTRA.INC /></EXTRA.INC.1>\r
280 <EXTRA.ARG.1><EXTRA.ARG /></EXTRA.ARG.1>\r
281 </Build_IPF_Assembly_Code>\r
282 </then>\r
283 </elseif>\r
284 </if>\r
878ddf1f 285 </sequential>\r
286 </macrodef>\r
5fc17c92 287 \r
0fd9e137 288 <!--\r
5fc17c92 289 IA32/x64 Assembly\r
0fd9e137 290 -->\r
5fc17c92 291 <macrodef name="Build_Assembly">\r
0fd9e137 292 <attribute name="FILEPATH"/>\r
293 <attribute name="FILENAME"/>\r
294 <attribute name="FILEEXT" default="asm"/>\r
295\r
5fc17c92 296 <element name="EXTRA.INC.1" optional="yes"/>\r
297 <element name="EXTRA.ARG.1" optional="yes"/>\r
0fd9e137 298\r
299 <sequential>\r
5fc17c92 300 <var name="FILE_BASENAME" value="@{FILENAME}" />\r
301 <var name="FILE_PATH" value="@{FILEPATH}" />\r
0fd9e137 302 <mkdir dir="${DEST_DIR_OUTPUT}/@{FILEPATH}"/>\r
303\r
a387de3b 304 <makedeps DepsFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}.dep"\r
305 TargetFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj">\r
306 <input file="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>\r
307 <EXTRA.INC.1/>\r
308 </makedeps>\r
309\r
0fd9e137 310 <OnDependency>\r
311 <sourcefiles>\r
a387de3b 312 <file Listfile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}.dep"/>\r
313 <file ListFile="${DEST_DIR_OUTPUT}/AutoGen.h.dep"/>\r
0fd9e137 314 </sourcefiles>\r
315 <targetfiles>\r
316 <file Name="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj"/>\r
317 </targetfiles>\r
318\r
319 <sequential>\r
c44794ef 320 <cc userdefine="on">\r
877de749 321 <command type="PP" cmd="${PP}" workdir="${DEST_DIR_OUTPUT}/@{FILEPATH}" family="${PP_FAMILY}" \r
322 dpath="${PP_DPATH}" libpath="${PP_LIBPATH}" include="${PP_INCLUDEPATH}">\r
c44794ef 323 <EXTRA.INC.1/>\r
324 <argument value="${PP_FLAGS}"/>\r
3fc9d866 325 <fileset casesensitive="on" file="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>\r
c44794ef 326 </command>\r
327 </cc>\r
328\r
329 <replaceregexp file="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.i"\r
330 match="^(#line +1 +.*@{FILEPATH}/@{FILENAME}\.@{FILEEXT}&quot;).+\1"\r
331 replace=";"\r
332 flags="gs"/>\r
333 <replaceregexp file="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.i"\r
334 match="^(#line .*)$"\r
335 replace="; \1"\r
336 byline="true"/>\r
337 <replaceregexp file="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.i"\r
338 match="([^_a-zA-Z])0x([0-9a-fA-F]+)"\r
339 replace="\10\2h"\r
340 flags="g"\r
341 byline="true"/>\r
0d2001d3 342\r
0fd9e137 343 <cc userdefine="on">\r
5fc17c92 344 <command type="ASM" cmd="${ASM}" workdir="${DEST_DIR_OUTPUT}" family="${ASM_FAMILY}"\r
877de749 345 outputFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj" dpath="${ASM_DPATH}"\r
346 libpath="${ASM_LIBPATH}" include="${ASM_INCLUDEPATH}">\r
5fc17c92 347 <EXTRA.INC.1/>\r
348 \r
0fd9e137 349 <argument value="${ASM_FLAGS}"/>\r
5fc17c92 350 <EXTRA.ARG.1/>\r
351 \r
3fc9d866 352 <fileset casesensitive="on" file="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.i"/>\r
75d0c5b1 353 </command>\r
354 </cc>\r
355 </sequential>\r
356 </OnDependency>\r
32a47954 357 <!-- Since fileset can't scan file start with ./, remove ./ in previous. -->\r
358 <if>\r
359 <equals arg1="@{FILEPATH}" arg2="." />\r
360 <then>\r
361 <var name="OBJECTS" value="${OBJECTS} @{FILENAME}.obj" />\r
362 </then>\r
363 <else>\r
364 <var name="OBJECTS" value="${OBJECTS} @{FILEPATH}/@{FILENAME}.obj" />\r
365 </else>\r
366 </if>\r
75d0c5b1 367 </sequential>\r
df569f61 368 </macrodef>\r
369\r
370 <!--\r
371 Build GCC assembly code\r
372 -->\r
373 <macrodef name="Build_Gcc_Assembly">\r
374 <attribute name="FILEPATH"/>\r
375 <attribute name="FILENAME"/>\r
376 <attribute name="FILEEXT" default="asm"/>\r
377\r
378 <element name="EXTRA.INC.1" optional="yes"/>\r
379 <element name="EXTRA.ARG.1" optional="yes"/>\r
380\r
381 <sequential>\r
382 <var name="FILE_BASENAME" value="@{FILENAME}" />\r
383 <var name="FILE_PATH" value="@{FILEPATH}" />\r
384 <mkdir dir="${DEST_DIR_OUTPUT}/@{FILEPATH}"/>\r
385\r
a387de3b 386 <makedeps DepsFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}.dep"\r
387 TargetFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj">\r
388 <input file="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>\r
389 <EXTRA.INC.1/>\r
390 </makedeps>\r
391\r
df569f61 392 <OnDependency>\r
393 <sourcefiles>\r
a387de3b 394 <file Listfile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}.dep"/>\r
395 <file ListFile="${DEST_DIR_OUTPUT}/AutoGen.h.dep"/>\r
df569f61 396 </sourcefiles>\r
397 <targetfiles>\r
398 <file Name="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj"/>\r
399 </targetfiles>\r
400\r
401 <sequential>\r
df569f61 402 <cc userdefine="on">\r
403 <command type="ASM" cmd="${ASM}" workdir="${DEST_DIR_OUTPUT}" family="${ASM_FAMILY}"\r
877de749 404 outputFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj" dpath="${ASM_DPATH}"\r
405 libpath="${ASM_LIBPATH}" include="${ASM_INCLUDEPATH}">\r
df569f61 406 <EXTRA.INC.1/>\r
407 \r
408 <argument value="${ASM_FLAGS}"/>\r
409 <EXTRA.ARG.1/>\r
410 \r
3fc9d866 411 <fileset casesensitive="on" file="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>\r
df569f61 412 </command>\r
413 </cc>\r
414 </sequential>\r
415 </OnDependency>\r
32a47954 416 <!-- Since fileset can't scan file start with ./, remove ./ in previous. -->\r
417 <if>\r
418 <equals arg1="@{FILEPATH}" arg2="." />\r
419 <then>\r
420 <var name="OBJECTS" value="${OBJECTS} @{FILENAME}.obj" />\r
421 </then>\r
422 <else>\r
423 <var name="OBJECTS" value="${OBJECTS} @{FILEPATH}/@{FILENAME}.obj" />\r
424 </else>\r
425 </if>\r
df569f61 426 </sequential>\r
75d0c5b1 427 </macrodef>\r
428\r
878ddf1f 429 <!--\r
430 IPF Assembly\r
431 -->\r
432 <macrodef name="Build_IPF_Assembly_Code">\r
433 <attribute name="FILEPATH"/>\r
434 <attribute name="FILENAME"/>\r
435 <attribute name="FILEEXT" default="s"/>\r
436\r
5fc17c92 437 <element name="EXTRA.INC.1" optional="yes"/>\r
438 <element name="EXTRA.ARG.1" optional="yes"/>\r
878ddf1f 439\r
440 <sequential>\r
22e0585c 441 <mkdir dir="${DEST_DIR_OUTPUT}/@{FILEPATH}"/>\r
878ddf1f 442\r
a387de3b 443 <makedeps DepsFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}.dep"\r
444 TargetFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj">\r
445 <input file="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>\r
446 <EXTRA.INC.1/>\r
447 </makedeps>\r
878ddf1f 448\r
449 <OnDependency>\r
450 <sourcefiles>\r
22e0585c 451 <file listfile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}.dep"/>\r
a387de3b 452 <file ListFile="${DEST_DIR_OUTPUT}/AutoGen.h.dep"/>\r
878ddf1f 453 </sourcefiles>\r
454 <targetfiles>\r
22e0585c 455 <file name="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj"/>\r
878ddf1f 456 </targetfiles>\r
457\r
458 <sequential>\r
878ddf1f 459 <cc userdefine="on">\r
877de749 460 <command type="PP" cmd="${APP}" workdir="${DEST_DIR_OUTPUT}/@{FILEPATH}" family="${APP_FAMILY}" \r
461 dpath="${APP_DPATH}" libpath="${APP_LIBPATH}" include="${APP_INCLUDEPATH}">\r
5fc17c92 462 <EXTRA.INC.1/>\r
0b8fc154 463 <argument value="${APP_FLAGS}"/>\r
3fc9d866 464 <fileset casesensitive="on" file="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>\r
878ddf1f 465 </command>\r
466 </cc>\r
5fc17c92 467 \r
878ddf1f 468 <cc userdefine="on">\r
5fc17c92 469 <command type="ASM" cmd="${ASM}" workdir="${DEST_DIR_OUTPUT}" family="${ASM_FAMILY}"\r
32c8b5a9 470 includepathDelimiter="-I" outputDelimiter="-o" dpath="${ASM_DPATH}"\r
877de749 471 libpath="${ASM_LIBPATH}" include="${ASM_INCLUDEPATH}"\r
5fc17c92 472 outputFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj">\r
473 <EXTRA.INC.1/>\r
878ddf1f 474 <argument value="${ASM_FLAGS}"/>\r
5fc17c92 475 <EXTRA.ARG.1/>\r
3fc9d866 476 <fileset casesensitive="on" file="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.i"/>\r
878ddf1f 477 </command>\r
478 </cc>\r
479 </sequential>\r
480 </OnDependency>\r
32a47954 481 <!-- Since fileset can't scan file start with ./, remove ./ in previous. -->\r
482 <if>\r
483 <equals arg1="@{FILEPATH}" arg2="." />\r
484 <then>\r
485 <var name="OBJECTS" value="${OBJECTS} @{FILENAME}.obj" />\r
486 </then>\r
487 <else>\r
488 <var name="OBJECTS" value="${OBJECTS} @{FILEPATH}/@{FILENAME}.obj" />\r
489 </else>\r
490 </if>\r
878ddf1f 491 </sequential>\r
492 </macrodef>\r
493\r
494\r
a387de3b 495 <!-- \r
496 Assembly the preprocessed IPF assembly code\r
497 -->\r
878ddf1f 498 <macrodef name="Build_IPF_PP_Code">\r
499 <attribute name="FILEPATH"/>\r
500 <attribute name="FILENAME"/>\r
501 <attribute name="FILEEXT" default="i"/>\r
502\r
503 <element name="EXTRA.INC" optional="yes"/>\r
504 <element name="EXTRA.ARG" optional="yes"/>\r
505\r
506 <sequential>\r
22e0585c 507 <mkdir dir="${DEST_DIR_OUTPUT}/@{FILEPATH}"/>\r
5fc17c92 508 \r
878ddf1f 509 <cc userdefine="on">\r
877de749 510 <command type="ASM" includepathDelimiter="-I" dpath="${ASM_DPATH}"\r
511 libpath="${ASM_LIBPATH}" include="${ASM_INCLUDEPATH}">\r
878ddf1f 512 <includepath path="${WORKSPACE_DIR}"/>\r
513 <includepath path="${MODULE_DIR}"/>\r
22e0585c 514 <includepath path="${MODULE_DIR}/${ARCH}"/>\r
878ddf1f 515 <EXTRA.INC/>\r
5fc17c92 516 \r
878ddf1f 517 <argument value="${ASM_FLAGS}"/>\r
518 <EXTRA.ARG/>\r
22e0585c 519 <OutputFile File="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj"/>\r
5fc17c92 520 \r
3fc9d866 521 <fileset casesensitive="on" file="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>\r
878ddf1f 522 </command>\r
523 </cc>\r
878ddf1f 524 </sequential>\r
525 </macrodef>\r
5fc17c92 526 \r
527 \r
a387de3b 528 <!--\r
529 Library\r
530 -->\r
5fc17c92 531 <macrodef name="Build_Library">\r
532 <attribute name="FILENAME" />\r
533 <attribute name="FILEEXT" default="obj"/>\r
534 \r
535 <sequential>\r
536 <var name="FILE_BASENAME" value="@{FILENAME}" />\r
537 <var name="FILE_PATH" value="." />\r
538 <mkdir dir="${BIN_DIR}"/>\r
878ddf1f 539\r
5fc17c92 540 <OnDependency>\r
541 <sourcefiles>\r
32a47954 542 <fileset dir="${DEST_DIR_OUTPUT}" includes="${OBJECTS}" />\r
5fc17c92 543 </sourcefiles>\r
544 <targetfiles>\r
545 <file name="${BIN_DIR}/@{FILENAME}.lib"/>\r
546 </targetfiles>\r
878ddf1f 547\r
5fc17c92 548 <sequential>\r
549 <cc userdefine="on">\r
550 <command type="SLINK" cmd="${SLINK}" family="${SLINK_FAMILY}"\r
877de749 551 outputFile="${BIN_DIR}/@{FILENAME}.lib" dpath="${SLINK_DPATH}"\r
552 libpath="${SLINK_LIBPATH}" include="${SLINK_INCLUDEPATH}">\r
5fc17c92 553 <argument value="${SLINK_FLAGS}"/>\r
878ddf1f 554\r
32a47954 555 <fileset dir="${DEST_DIR_OUTPUT}" includes="${OBJECTS}"/>\r
5fc17c92 556 </command>\r
557 </cc>\r
558 </sequential>\r
559 </OnDependency>\r
878ddf1f 560 </sequential>\r
561 </macrodef>\r
562\r
563 <!--\r
564 Unicode -> .sdb\r
565 -->\r
5fc17c92 566 <macrodef name="Build_UNI">\r
878ddf1f 567 <attribute name="FILEPATH"/>\r
568 <attribute name="FILENAME"/>\r
569 <attribute name="FILEEXT" default="uni"/>\r
570\r
571 <element name="EXTRA.INC" optional="yes"/>\r
572 <element name="EXTRA.ARG" optional="yes"/>\r
573\r
574 <sequential>\r
22e0585c 575 <mkdir dir="${DEST_DIR_OUTPUT}/@{FILEPATH}"/>\r
a387de3b 576 <makedeps DepsFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}.dep"\r
577 TargetFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.sdb">\r
578 <input file="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>\r
579 <EXTRA.INC/>\r
580 </makedeps>\r
878ddf1f 581\r
582 <OnDependency>\r
583 <sourcefiles>\r
a387de3b 584 <file listfile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}.dep"/>\r
878ddf1f 585 </sourcefiles>\r
586 <targetfiles>\r
22e0585c 587 <file name="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.sdb"/>\r
878ddf1f 588 </targetfiles>\r
589\r
590 <sequential>\r
591 <strgather commandtype="parse" newdatabase="true">\r
22e0585c 592 <database name="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.sdb"/>\r
878ddf1f 593 <EXTRA.INC/>\r
594 <EXTRA.ARG/>\r
22e0585c 595 <inputfile name="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>\r
878ddf1f 596 </strgather>\r
597 </sequential>\r
598 </OnDependency>\r
599\r
5fc17c92 600 <var name="SDB_FILES" value="${SDB_FILES}, ${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.sdb"/>\r
878ddf1f 601 </sequential>\r
602 </macrodef>\r
603\r
604 <!--\r
605 .sdb(s) -> .c, .h -> .obj\r
606 -->\r
607 <macrodef name="Build_Unicode_Database">\r
608 <attribute name="FILEPATH"/>\r
609 <attribute name="FILENAME"/>\r
610 <attribute name="FILEEXT" default="sdb"/>\r
611\r
612 <element name="EXTRA.INC" optional="yes"/>\r
613 <element name="EXTRA.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
620 <file list="${SDB_FILES}"/>\r
621 <file list="${SOURCE_FILES}"/>\r
622 </sourcefiles>\r
623 <targetfiles>\r
22e0585c 624 <file name="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.sdb"/>\r
878ddf1f 625 </targetfiles>\r
5fc17c92 626 \r
878ddf1f 627 <sequential>\r
22e0585c 628 <strgather commandtype="scan" outputdatabase="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.sdb" verbose="read">\r
878ddf1f 629 <skipext name=".uni"/>\r
630 <skipext name=".h"/>\r
631 <database list="${SDB_FILES}"/>\r
632 <inputfile name="${SOURCE_FILES}"/>\r
633 </strgather>\r
634 </sequential>\r
635 </OnDependency>\r
636\r
637 <OnDependency>\r
638 <sourcefiles>\r
22e0585c 639 <file name="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.sdb"/>\r
878ddf1f 640 </sourcefiles>\r
641 <targetfiles>\r
22e0585c 642 <file name="${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}StrDefs.h"/>\r
643 <file name="${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}Strings.hpk"/>\r
644 <file name="${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}Strings.c"/>\r
878ddf1f 645 </targetfiles>\r
5fc17c92 646 \r
878ddf1f 647 <sequential>\r
648 <strgather basename="@{FILENAME}Strings" commandtype="dump"\r
22e0585c 649 outputdefines="${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}StrDefs.h"\r
650 outputhpk="${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}Strings.hpk"\r
651 outputstring="${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}Strings.c">\r
652 <database name="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.sdb"/>\r
878ddf1f 653 </strgather>\r
654 </sequential>\r
655 </OnDependency>\r
656\r
657 <OnDependency>\r
658 <sourcefiles>\r
22e0585c 659 <file name="${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}Strings.c"/>\r
20480ea1 660 <file ListFile="${DEST_DIR_OUTPUT}/AutoGen.h.dep"/>\r
878ddf1f 661 </sourcefiles>\r
662 <targetfiles>\r
22e0585c 663 <file name="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}Strings.obj"/>\r
878ddf1f 664 </targetfiles>\r
5fc17c92 665 \r
878ddf1f 666 <sequential>\r
667 <cc userdefine="on">\r
5fc17c92 668 <command type="CC" cmd="${CC}" workdir="${DEST_DIR_OUTPUT}" family="${CC_FAMILY}"\r
32c8b5a9 669 includepathDelimiter="-I" dpath="${CC_DPATH}"\r
877de749 670 libpath="${CC_LIBPATH}" include="${CC_INCLUDEPATH}"\r
5fc17c92 671 outputFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}Strings.obj">\r
1549f516 672 <argument value="${CC_FLAGS}"/>\r
5fc17c92 673 <EXTRA.INC />\r
3fc9d866 674 <fileset casesensitive="on" file="${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}Strings.c"/>\r
878ddf1f 675 </command>\r
676 </cc>\r
677 </sequential>\r
678 </OnDependency>\r
4436ffdc 679\r
32a47954 680 <!-- Since fileset can't scan file start with ./, remove ./ in previous. -->\r
681 <if>\r
682 <equals arg1="@{FILEPATH}" arg2="." />\r
683 <then>\r
684 <var name="OBJECTS" value="${OBJECTS} @{FILENAME}Strings.obj" />\r
685 </then>\r
686 <else>\r
687 <var name="OBJECTS" value="${OBJECTS} @{FILEPATH}/@{FILENAME}Strings.obj" />\r
688 </else>\r
689 </if>\r
878ddf1f 690 </sequential>\r
691 </macrodef>\r
692\r
693 <!--\r
694 Vfr\r
695 -->\r
5fc17c92 696 <macrodef name="Build_VFR">\r
878ddf1f 697 <attribute name="FILEPATH"/>\r
698 <attribute name="FILENAME"/>\r
699 <attribute name="FILEEXT" default="vfr"/>\r
700\r
701 <element name="EXTRA.INC" optional="yes"/>\r
702 <element name="EXTRA.ARG" optional="yes"/>\r
703\r
704 <sequential>\r
705 <mkdir dir="${DEST_DIR_DEBUG}/@{FILEPATH}"/>\r
706\r
a387de3b 707 <makedeps DepsFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}.dep"\r
708 TargetFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj">\r
709 <input file="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>\r
710 <EXTRA.INC/>\r
711 </makedeps>\r
878ddf1f 712\r
713 <OnDependency>\r
714 <sourcefiles>\r
22e0585c 715 <file listfile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}.dep"/>\r
a387de3b 716 <file ListFile="${DEST_DIR_OUTPUT}/AutoGen.h.dep"/>\r
878ddf1f 717 </sourcefiles>\r
718 <targetfiles>\r
22e0585c 719 <file name="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj"/>\r
878ddf1f 720 </targetfiles>\r
721\r
722 <sequential>\r
62f022cc 723 <!-- if "TOOLCHIAN FAMILY" is "GCC", it should point the ouput file for preprocess compiler --> \r
724 <if>\r
725 <equals arg1="${CC_FAMILY}" arg2="GCC"/>\r
726 <then>\r
727 <cc userdefine="on">\r
728 <command type="PP" cmd="${PP}" workdir="${DEST_DIR_OUTPUT}/@{FILEPATH}" family="${PP_FAMILY}" \r
729 dpath="${PP_DPATH}" libpath="${PP_LIBPATH}" include="${PP_INCLUDEPATH}">\r
730 <argument value="${VFRPP_FLAGS} -o ${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.i"/>\r
731 <!-- Output file of the preprocess --> \r
732 <EXTRA.INC/> \r
733 <fileset casesensitive="on" file="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/> \r
734 </command>\r
735 </cc>\r
736 </then>\r
737 </if>\r
738 \r
739 <if>\r
740 <not>\r
741 <equals arg1="${CC_FAMILY}" arg2="GCC"/>\r
742 </not>\r
743 <then>\r
744 <cc userdefine="on">\r
745 <command type="PP" cmd="${PP}" workdir="${DEST_DIR_OUTPUT}/@{FILEPATH}" family="${PP_FAMILY}" \r
746 dpath="${PP_DPATH}" libpath="${PP_LIBPATH}" include="${PP_INCLUDEPATH}">\r
55cc5329 747 <argument value="${VFRPP_FLAGS} ${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>\r
62f022cc 748 <!-- Output file of the preprocess --> \r
749 <EXTRA.INC/> \r
750 <fileset casesensitive="on" file="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/> \r
751 </command>\r
752 </cc>\r
753 </then>\r
754 </if>\r
755 \r
b609c89b 756 \r
757 <vfrcompile createIfrBinFile="on" createListFile="on" outPutDir="${DEST_DIR_DEBUG}/@{FILEPATH}" vfrFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.i">\r
878ddf1f 758 <EXTRA.INC/>\r
759 </vfrcompile>\r
5fc17c92 760 \r
878ddf1f 761 <cc userdefine="on">\r
5fc17c92 762 <command type="CC" cmd="${CC}" workdir="${DEST_DIR_OUTPUT}" \r
32c8b5a9 763 includepathDelimiter="-I" family="${CC_FAMILY}" dpath="${CC_DPATH}"\r
877de749 764 libpath="${CC_LIBPATH}" include="${CC_INCLUDEPATH}"\r
5fc17c92 765 outputFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.obj" >\r
1549f516 766 <argument value="${CC_FLAGS}"/>\r
5fc17c92 767 <EXTRA.INC/>\r
878ddf1f 768 <EXTRA.ARG/>\r
3fc9d866 769 <fileset casesensitive="on" file="${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}.c"/>\r
878ddf1f 770 </command>\r
771 </cc>\r
878ddf1f 772 </sequential>\r
773 </OnDependency>\r
32a47954 774 <!-- Since fileset can't scan file start with ./, remove ./ in previous. -->\r
775 <if>\r
776 <equals arg1="@{FILEPATH}" arg2="." />\r
777 <then>\r
778 <var name="OBJECTS" value="${OBJECTS} @{FILENAME}.obj" />\r
779 </then>\r
780 <else>\r
781 <var name="OBJECTS" value="${OBJECTS} @{FILEPATH}/@{FILENAME}.obj" />\r
782 </else>\r
783 </if>\r
878ddf1f 784 </sequential>\r
785 </macrodef>\r
786\r
706c2ad4 787 <!--\r
788 Build the real mode ASM file\r
789 -->\r
790 <macrodef name="Build_RealAsm">\r
791 <attribute name="FILEPATH"/>\r
792 <attribute name="FILENAME"/>\r
793 <attribute name="FILEEXT" default="asm"/>\r
794\r
795 <element name="EXTRA.INC" optional="yes"/>\r
796 <element name="EXTRA.ARG" optional="yes"/>\r
797 \r
798 <sequential>\r
741fb364
LG
799 <OnDependency>\r
800 <sourcefiles>\r
801 <file name="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>\r
802 </sourcefiles>\r
803 <targetfiles>\r
804 <file name="${DEST_DIR_OUTPUT}/@{FILENAME}.cat"/>\r
805 </targetfiles>\r
806 \r
807 <sequential>\r
808 <exec dir="${DEST_DIR_OUTPUT}" executable="${ASM}" failonerror="true">\r
809 <arg line="/nologo /omf ${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT} /Bl${ASMLINK} ${ASMLINK_FLAGS}"/>\r
810 </exec>\r
811 <concat destfile="${DEST_DIR_OUTPUT}/@{FILENAME}.cat" binary="yes">\r
812 <filelist dir="${MODULE_DIR}" files="Blank2.pad"/>\r
813 <filelist dir="${DEST_DIR_OUTPUT}" files="@{FILENAME}.com"/>\r
814 </concat>\r
815 </sequential>\r
816 </OnDependency>\r
706c2ad4 817 </sequential>\r
818 </macrodef>\r
d8022b36
LG
819\r
820 <!--\r
821 Build Asl table file\r
822 -->\r
823 <macrodef name="Build_ASL">\r
824 <attribute name="FILEPATH"/>\r
825 <attribute name="FILENAME"/>\r
826 <attribute name="FILEEXT" default="asl"/>\r
827\r
828 <element name="EXTRA.INC" optional="yes"/>\r
829 <element name="EXTRA.ARG" optional="yes"/>\r
830 \r
831 <sequential>\r
832 <mkdir dir="${DEST_DIR_OUTPUT}"/>\r
833\r
834 <OnDependency>\r
835 <sourcefiles>\r
836 <file name="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>\r
837 </sourcefiles>\r
838 <targetfiles>\r
839 <file name="${DEST_DIR_OUTPUT}/@{FILENAME}.sec"/>\r
840 </targetfiles>\r
841\r
842 <sequential>\r
843 <cc userdefine="on">\r
844 <command type="PP" cmd="${PP}" workdir="${DEST_DIR_OUTPUT}" family="${PP_FAMILY}" \r
845 dpath="${PP_DPATH}" libpath="${PP_LIBPATH}" include="${PP_INCLUDEPATH}">\r
846 <argument value="${APP_FLAGS}"/>\r
847 <EXTRA.INC/> \r
848 <fileset casesensitive="on" file="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>\r
849 </command>\r
850 </cc>\r
851\r
852 <exec dir="${DEST_DIR_OUTPUT}" executable="${ASL}" failonerror="true" outputproperty="ASL_OUTPUT">\r
853 <arg line="${DEST_DIR_OUTPUT}/@{FILENAME}.i"/>\r
854 </exec>\r
855\r
856 <if>\r
857 <or>\r
858 <contains string="${ASL_OUTPUT}" substring="Supports ACPI Specification Revision 2.0"/>\r
859 <contains string="${ASL_OUTPUT}" substring="Supports ACPI Specification Revision 1.0"/>\r
860 </or>\r
861 <then>\r
862 <fail message="Current Asl tool not support Acpi Spec 3.0. Pls update your Asl compiler."/>\r
863 </then>\r
864 </if>\r
865\r
866 <EFI_SECTION_RAW FILEPATH="." FILENAME="@{FILENAME}" FILEEXT="aml"/>\r
867 \r
868 </sequential>\r
869 </OnDependency>\r
870 </sequential>\r
871 </macrodef> \r
872\r
873 <!--\r
874 Build Asl table c file\r
875 -->\r
876 <macrodef name="Build_CCASL">\r
877 <attribute name="FILEPATH"/>\r
878 <attribute name="FILENAME"/>\r
879 <attribute name="FILEEXT" default="c"/>\r
880\r
881 <element name="EXTRA.INC" optional="yes"/>\r
882 <element name="EXTRA.ARG" optional="yes"/>\r
883 \r
884 <sequential>\r
885 <mkdir dir="${DEST_DIR_OUTPUT}"/>\r
886\r
887 <OnDependency>\r
888 <sourcefiles>\r
889 <file name="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>\r
890 </sourcefiles>\r
891 <targetfiles>\r
892 <file name="${DEST_DIR_OUTPUT}/@{FILENAME}.sec"/>\r
893 </targetfiles>\r
894\r
895 <sequential>\r
896\r
897 <cc userdefine="on">\r
898 <command type="CC" cmd="${CC}" workdir="${DEST_DIR_OUTPUT}" family="${CC_FAMILY}"\r
899 outputFile="${DEST_DIR_OUTPUT}/@{FILENAME}.obj" dpath="${CC_DPATH}" \r
900 libpath="${CC_LIBPATH}" include="${CC_INCLUDEPATH}">\r
901 <EXTRA.INC/>\r
902 <argument value="${CC_FLAGS}"/>\r
903 <EXTRA.ARG/>\r
904 <fileset casesensitive="on" file="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>\r
905 </command>\r
906 </cc>\r
907\r
908 <cc userdefine="on">\r
909 <command type="DLINK" cmd="${DLINK}" family="${DLINK_FAMILY}" \r
910 outputFile="${DEST_DIR_OUTPUT}/@{FILENAME}.exe" dpath="${DLINK_DPATH}" >\r
911 <argument value="${SLINK_FLAGS}"/>\r
912 <fileset casesensitive="on" file="${DEST_DIR_OUTPUT}/@{FILENAME}.obj"/>\r
913 </command>\r
914 </cc>\r
915 \r
916 <genacpitable inputfile="${DEST_DIR_OUTPUT}/@{FILENAME}.exe" outputfile="${DEST_DIR_OUTPUT}/@{FILENAME}.acpi" /> \r
917 \r
918 <EFI_SECTION_RAW FILEPATH="." FILENAME="@{FILENAME}" FILEEXT="acpi"/>\r
919 </sequential>\r
920 </OnDependency>\r
921 </sequential>\r
922 </macrodef> \r
923\r
a99a79e4 924 <!--\r
a387de3b 925 DUMMY - for skipping the source file which should not be built\r
a99a79e4 926 -->\r
927 <macrodef name="Build_DUMMY">\r
928 <attribute name="FILEPATH"/>\r
929 <attribute name="FILENAME"/>\r
930 <attribute name="FILEEXT"/>\r
931\r
932 <element name="EXTRA.INC" optional="yes"/>\r
933 <element name="EXTRA.ARG" optional="yes"/>\r
934\r
935 <sequential>\r
7446fb2d 936 <!--echo message="Ignoring ${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}" level="info" /-->\r
a99a79e4 937 </sequential>\r
938 </macrodef>\r
939\r
878ddf1f 940<!--############################################################################\r
941 Build Sections\r
942#############################################################################-->\r
943 <!--\r
944 DLL\r
945 -->\r
946 <macrodef name="GenDll">\r
947 <attribute name="FILEPATH"/>\r
948 <attribute name="FILENAME"/>\r
949 <attribute name="FILEEXT"/>\r
950\r
951 <element name="LIB.ARG" optional="yes"/>\r
952 <element name="LINK.ARG" optional="yes"/>\r
953\r
954 <sequential>\r
5fc17c92 955 <var name="FILE_BASENAME" value="@{FILENAME}" />\r
956 <var name="FILE_PATH" value="@{FILEPATH}" />\r
878ddf1f 957 <OnDependency>\r
958 <sourcefiles>\r
878ddf1f 959 <file list="${LIBS}"/>\r
32a47954 960 <fileset dir="${DEST_DIR_OUTPUT}" includes="${OBJECTS}" />\r
878ddf1f 961 </sourcefiles>\r
962 <targetfiles>\r
22e0585c 963 <file name="${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}.dll"/>\r
878ddf1f 964 </targetfiles>\r
965\r
966 <sequential>\r
8b41e66e 967 <cc userdefine="on">\r
32c8b5a9 968 <command type="SLINK" cmd="${SLINK}" family="${SLINK_FAMILY}" dpath="${SLINK_DPATH}"\r
877de749 969 outputFile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}Local.lib"\r
970 libpath="${SLINKLIBPATH}" include="${SLINK_INCLUDEPATH}">\r
5fc17c92 971 <argument value="${SLINK_FLAGS}"/>\r
972\r
32a47954 973 <fileset dir="${DEST_DIR_OUTPUT}" includes="${OBJECTS}"/>\r
8b41e66e 974 </command>\r
975 </cc>\r
878ddf1f 976 <cc userdefine="on">\r
5fc17c92 977 <command type="DLINK" cmd="${DLINK}" family="${DLINK_FAMILY}"\r
877de749 978 outputFile="${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}.dll" dpath="${DLINK_DPATH}" \r
979 libpath="${DLINK_LIBPATH}" include="${DLINK_INCLUDEPATH}">\r
5fc17c92 980 <argument value="${DLINK_FLAGS}"/>\r
63062e1e 981 <libset libs="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}Local.lib ${LIBS} ${DLINK_SPATH}"/>\r
878ddf1f 982 <LINK.ARG/>\r
878ddf1f 983 </command>\r
984 </cc>\r
985 </sequential>\r
986 </OnDependency>\r
987 </sequential>\r
988 </macrodef>\r
989\r
990 <!--\r
991 EFI\r
992 -->\r
993 <macrodef name="GenEfi">\r
994 <attribute name="FILEPATH"/>\r
995 <attribute name="FILENAME"/>\r
996 <attribute name="FILEEXT" default="dll"/>\r
997\r
998 <sequential>\r
999 <OnDependency>\r
1000 <sourcefiles>\r
22e0585c 1001 <file name="${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>\r
878ddf1f 1002 </sourcefiles>\r
1003 <targetfiles>\r
22e0585c 1004 <file name="${DEST_DIR_OUTPUT}/@{FILENAME}.efi"/>\r
878ddf1f 1005 </targetfiles>\r
1006\r
1007 <sequential>\r
5fc17c92 1008 <fwimage componentType="${MODULE_TYPE}" outImage="${DEST_DIR_OUTPUT}/@{FILENAME}.efi" \r
22e0585c 1009 peImage="${DEST_DIR_DEBUG}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}" time="0"/>\r
878ddf1f 1010 </sequential>\r
1011 </OnDependency>\r
1012 </sequential>\r
1013 </macrodef>\r
1014\r
1015<!--\r
1016 EFI_SECTION_FREEFORM_SUBTYPE_GUID\r
1017 EFI_SECTION_VERSION\r
1018 EFI_SECTION_USER_INTERFACE\r
1019 EFI_SECTION_DXE_DEPEX\r
1020 EFI_SECTION_PEI_DEPEX\r
1021 EFI_SECTION_PE32\r
1022 EFI_SECTION_PIC\r
1023 EFI_SECTION_TE\r
1024 EFI_SECTION_RAW\r
1025 EFI_SECTION_COMPRESSION\r
1026 EFI_SECTION_GUID_DEFINED\r
1027 EFI_SECTION_COMPATIBILITY16\r
1028 EFI_SECTION_FIRMWARE_VOLUME_IMAGE\r
1029 -->\r
1030 <!--\r
1031 EFI_SECTION_PE32\r
1032 -->\r
46dde08c
LG
1033\r
1034 <macrodef name="EFI_SECTION_TE">\r
1035 <attribute name="FILEPATH"/>\r
1036 <attribute name="FILENAME"/>\r
1037 <attribute name="FILEEXT" default="" />\r
1038\r
1039 <element name="PRE.PROCESS" optional="yes"/>\r
1040 <element name="POST.PROCESS" optional="yes"/>\r
1041\r
1042 <sequential>\r
1043 <PRE.PROCESS/>\r
1044 <if>\r
1045 <not>\r
1046 <equals arg1="${LIBS}" arg2=""/>\r
1047 </not>\r
1048\r
1049 <then>\r
1050 <GenDll FILEPATH="." FILENAME="@{FILENAME}" FILEEXT="">\r
1051 <LIB.ARG></LIB.ARG>\r
1052 <LINK.ARG></LINK.ARG>\r
1053 </GenDll>\r
1054\r
1055 <GenEfi FILEPATH="." FILENAME="@{FILENAME}" FILEEXT="dll"/>\r
1056 </then>\r
1057 </if>\r
1058\r
1059 <OnDependency>\r
1060 <sourcefiles>\r
1061 <file name="${DEST_DIR_OUTPUT}/@{FILENAME}.efi"/>\r
1062 </sourcefiles>\r
1063 <targetfiles>\r
1064 <file name="${DEST_DIR_OUTPUT}/@{FILENAME}.tes"/>\r
1065 </targetfiles>\r
1066\r
1067 <sequential>\r
1068 <copy file="${DEST_DIR_OUTPUT}/@{FILENAME}.efi" tofile="${BIN_DIR}/@{FILENAME}.efi" />\r
1069 <copy file="${DEST_DIR_OUTPUT}/@{FILENAME}.efi" tofile="${DEST_DIR_DEBUG}/@{FILENAME}.efi" /> \r
1070 <genteimage Dump="false" Verbose="false" OutputDir="" OutputFile="${DEST_DIR_OUTPUT}/@{FILENAME}.te" InputFile="${DEST_DIR_OUTPUT}/@{FILENAME}.efi"/>\r
46dde08c
LG
1071 <gensection inputfile="${DEST_DIR_OUTPUT}/@{FILENAME}.te" \r
1072 outputfile="${DEST_DIR_OUTPUT}/@{FILENAME}.tes" \r
1073 sectiontype="EFI_SECTION_TE"/>\r
1074 <POST.PROCESS/>\r
1075 </sequential>\r
1076 </OnDependency>\r
1077 </sequential>\r
1078 </macrodef>\r
1079\r
878ddf1f 1080 <macrodef name="EFI_SECTION_PE32">\r
1081 <attribute name="FILEPATH"/>\r
1082 <attribute name="FILENAME"/>\r
1083 <attribute name="FILEEXT" default="" />\r
1084\r
1085 <element name="PRE.PROCESS" optional="yes"/>\r
1086 <element name="POST.PROCESS" optional="yes"/>\r
1087\r
1088 <sequential>\r
1089 <PRE.PROCESS/>\r
878ddf1f 1090 <if>\r
1091 <not>\r
5fc17c92 1092 <!-- TBD ${OBJECTS} -->\r
1093 <equals arg1="${LIBS}" arg2=""/>\r
878ddf1f 1094 </not>\r
1095\r
1096 <then>\r
1097 <GenDll FILEPATH="." FILENAME="@{FILENAME}" FILEEXT="">\r
1098 <LIB.ARG></LIB.ARG>\r
1099 <LINK.ARG></LINK.ARG>\r
1100 </GenDll>\r
0fd9e137 1101\r
878ddf1f 1102 <GenEfi FILEPATH="." FILENAME="@{FILENAME}" FILEEXT="dll"/>\r
1103 </then>\r
1104 </if>\r
5fc17c92 1105 \r
878ddf1f 1106 <OnDependency>\r
1107 <sourcefiles>\r
22e0585c 1108 <file name="${DEST_DIR_OUTPUT}/@{FILENAME}.efi"/>\r
878ddf1f 1109 </sourcefiles>\r
1110 <targetfiles>\r
22e0585c 1111 <file name="${DEST_DIR_OUTPUT}/@{FILENAME}.pe32"/>\r
878ddf1f 1112 </targetfiles>\r
1113\r
1114 <sequential>\r
22e0585c 1115 <copy file="${DEST_DIR_OUTPUT}/@{FILENAME}.efi" tofile="${BIN_DIR}/@{FILENAME}.efi" />\r
c084fb6e 1116 <copy file="${DEST_DIR_OUTPUT}/@{FILENAME}.efi" tofile="${DEST_DIR_DEBUG}/@{FILENAME}.efi" />\r
5fc17c92 1117 <gensection inputfile="${DEST_DIR_OUTPUT}/@{FILENAME}.efi" \r
1118 outputfile="${DEST_DIR_OUTPUT}/@{FILENAME}.pe32" \r
878ddf1f 1119 sectiontype="EFI_SECTION_PE32"/>\r
5fc17c92 1120 \r
878ddf1f 1121 <POST.PROCESS/>\r
1122 </sequential>\r
1123 </OnDependency>\r
1124 </sequential>\r
1125 </macrodef>\r
1126\r
1127 <!--\r
1128 EFI_SECTION_VERSION\r
1129 -->\r
1130 <macrodef name="EFI_SECTION_VERSION">\r
1131 <attribute name="FILEPATH"/>\r
1132 <attribute name="FILENAME"/>\r
1133 <attribute name="FILEEXT" default="" />\r
1134 <attribute name="VERSION" default="0000"/>\r
1135\r
1136 <element name="PRE.PROCESS" optional="yes"/>\r
1137 <element name="POST.PROCESS" optional="yes"/>\r
1138\r
1139 <sequential>\r
1140 <if>\r
1141 <not>\r
22e0585c 1142 <available type="file" file="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.ver"/>\r
878ddf1f 1143 </not>\r
1144\r
1145 <then>\r
1146 <PRE.PROCESS/>\r
5fc17c92 1147 <gensection outputfile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.ver" \r
878ddf1f 1148 versionnum="@{VERSION}"\r
1149 sectiontype="EFI_SECTION_VERSION"/>\r
1150 <POST.PROCESS/>\r
1151 </then>\r
1152 </if>\r
1153 </sequential>\r
1154 </macrodef>\r
1155\r
1156 <!--\r
1157 EFI_SECTION_USER_INTERFACE\r
1158 -->\r
1159 <macrodef name="EFI_SECTION_USER_INTERFACE">\r
1160 <attribute name="FILEPATH"/>\r
1161 <attribute name="FILENAME"/>\r
1162 <attribute name="FILEEXT" default="" />\r
1163 <attribute name="UI" default="${BASE_NAME}"/>\r
1164\r
1165 <element name="PRE.PROCESS" optional="yes"/>\r
1166 <element name="POST.PROCESS" optional="yes"/>\r
1167\r
1168 <sequential>\r
1169 <if>\r
1170 <not>\r
22e0585c 1171 <available type="file" file="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.ui"/>\r
878ddf1f 1172 </not>\r
1173\r
1174 <then>\r
1175 <PRE.PROCESS/>\r
1176 <gensection interfacestring="@{UI}"\r
5fc17c92 1177 outputfile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.ui" \r
878ddf1f 1178 sectiontype="EFI_SECTION_USER_INTERFACE"/>\r
1179 <POST.PROCESS/>\r
1180 </then>\r
1181 </if>\r
1182 </sequential>\r
1183 </macrodef>\r
1184\r
878ddf1f 1185 <!--\r
1186 EFI_SECTION_DXE_DEPEX\r
1187 -->\r
1188 <macrodef name="EFI_SECTION_DXE_DEPEX">\r
1189 <attribute name="FILEPATH"/>\r
1190 <attribute name="FILENAME"/>\r
1191 <attribute name="FILEEXT" default="dxs"/>\r
1192\r
1193 <element name="PRE.PROCESS" optional="yes"/>\r
1194 <element name="POST.PROCESS" optional="yes"/>\r
1195\r
1196 <sequential>\r
1197 <PRE.PROCESS/>\r
1198\r
1199 <if>\r
5fc17c92 1200 <available type="file" file="${DEST_DIR_OUTPUT}/@{FILENAME}.depex"/>\r
878ddf1f 1201 <then>\r
1202 <OnDependency>\r
1203 <sourcefiles>\r
5fc17c92 1204 <file name="${DEST_DIR_OUTPUT}/@{FILENAME}.depex"/>\r
878ddf1f 1205 </sourcefiles>\r
1206 <targetfiles>\r
22e0585c 1207 <file name="${DEST_DIR_OUTPUT}/@{FILENAME}.dpx"/>\r
878ddf1f 1208 </targetfiles>\r
1209 <sequential>\r
5fc17c92 1210 <gensection inputfile="${DEST_DIR_OUTPUT}/@{FILENAME}.depex" \r
1211 outputfile="${DEST_DIR_OUTPUT}/@{FILENAME}.dpx" \r
878ddf1f 1212 sectiontype="EFI_SECTION_DXE_DEPEX"/>\r
1213 </sequential>\r
1214 </OnDependency>\r
1215 </then>\r
1216 <else>\r
1217 <if>\r
1218 <not>\r
22e0585c 1219 <available type="file" file="${DEST_DIR_OUTPUT}/@{FILENAME}.dpx"/>\r
878ddf1f 1220 </not>\r
1221 <then>\r
22e0585c 1222 <touch file="${DEST_DIR_OUTPUT}/@{FILENAME}.dpx"/>\r
878ddf1f 1223 </then>\r
1224 </if>\r
1225 </else>\r
1226 </if>\r
1227\r
1228 <POST.PROCESS/>\r
1229 </sequential>\r
1230 </macrodef>\r
1231\r
1232 <!--\r
1233 EFI_SECTION_PEI_DEPEX\r
1234 -->\r
1235 <macrodef name="EFI_SECTION_PEI_DEPEX">\r
1236 <attribute name="FILEPATH"/>\r
1237 <attribute name="FILENAME"/>\r
1238 <attribute name="FILEEXT" default="dxs"/>\r
1239\r
1240 <element name="PRE.PROCESS" optional="yes"/>\r
1241 <element name="POST.PROCESS" optional="yes"/>\r
1242 <sequential>\r
1243 <PRE.PROCESS/>\r
1244 <if>\r
5fc17c92 1245 <available type="file" file="${DEST_DIR_OUTPUT}/@{FILENAME}.depex"/>\r
878ddf1f 1246 <then>\r
1247 <OnDependency>\r
1248 <sourcefiles>\r
5fc17c92 1249 <file name="${DEST_DIR_OUTPUT}/@{FILENAME}.depex"/>\r
878ddf1f 1250 </sourcefiles>\r
1251 <targetfiles>\r
22e0585c 1252 <file name="${DEST_DIR_OUTPUT}/@{FILENAME}.dpx"/>\r
878ddf1f 1253 </targetfiles>\r
1254\r
1255 <sequential>\r
5fc17c92 1256 <gensection inputfile="${DEST_DIR_OUTPUT}/@{FILENAME}.depex" \r
1257 outputfile="${DEST_DIR_OUTPUT}/@{FILENAME}.dpx" \r
878ddf1f 1258 sectiontype="EFI_SECTION_PEI_DEPEX"/>\r
1259 </sequential>\r
1260 </OnDependency>\r
5fc17c92 1261 \r
878ddf1f 1262 </then>\r
1263 <else>\r
1264 <if>\r
1265 <not>\r
22e0585c 1266 <available type="file" file="${DEST_DIR_OUTPUT}/@{FILENAME}.dpx"/>\r
878ddf1f 1267 </not>\r
1268 <then>\r
22e0585c 1269 <touch file="${DEST_DIR_OUTPUT}/@{FILENAME}.dpx"/>\r
878ddf1f 1270 </then>\r
1271 </if>\r
1272 </else>\r
1273 </if>\r
1274 <POST.PROCESS/>\r
1275 </sequential>\r
1276 </macrodef>\r
1277\r
878ddf1f 1278\r
1279 <!--\r
1280 EFI_SECTION_RAW\r
1281 -->\r
1282 <macrodef name="EFI_SECTION_RAW">\r
1283 <attribute name="FILEPATH"/>\r
1284 <attribute name="FILENAME"/>\r
1285 <attribute name="FILEEXT" default="bin"/>\r
1286\r
1287 <element name="PRE.PROCESS" optional="yes"/>\r
1288 <element name="POST.PROCESS" optional="yes"/>\r
1289\r
1290 <sequential>\r
1291 <OnDependency>\r
1292 <sourcefiles>\r
d8022b36 1293 <file name="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>\r
878ddf1f 1294 </sourcefiles>\r
1295 <targetfiles>\r
22e0585c 1296 <file name="${DEST_DIR_OUTPUT}/@{FILENAME}.sec"/>\r
878ddf1f 1297 </targetfiles>\r
1298\r
1299 <sequential>\r
1300 <PRE.PROCESS/>\r
d8022b36 1301 <gensection inputfile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}" \r
5fc17c92 1302 outputfile="${DEST_DIR_OUTPUT}/@{FILENAME}.sec" \r
878ddf1f 1303 sectiontype="EFI_SECTION_RAW"/>\r
1304 <POST.PROCESS/>\r
1305 </sequential>\r
1306 </OnDependency>\r
1307 </sequential>\r
1308 </macrodef>\r
1309\r
706c2ad4 1310 <!--\r
1311 EFI_SECTION_RAW_SEC\r
1312 -->\r
1313 <macrodef name="EFI_SECTION_RAW_SEC">\r
1314 <attribute name="FILEPATH"/>\r
1315 <attribute name="FILENAME"/>\r
1316 <attribute name="FILEEXT" default="cat"/>\r
1317\r
1318 <element name="PRE.PROCESS" optional="yes"/>\r
1319 <element name="POST.PROCESS" optional="yes"/>\r
1320\r
1321 <sequential>\r
1322 <OnDependency>\r
1323 <sourcefiles>\r
1324 <file name="${DEST_DIR_OUTPUT}/ResetVec.@{FILEEXT}"/>\r
1325 <file name="${DEST_DIR_OUTPUT}/@{FILENAME}.te"/>\r
1326 </sourcefiles>\r
1327 <targetfiles>\r
1328 <file name="${DEST_DIR_OUTPUT}/@{FILENAME}.sec"/>\r
1329 </targetfiles>\r
1330\r
1331 <sequential>\r
1332 <PRE.PROCESS/>\r
1333 <secfixup secexefile="${DEST_DIR_OUTPUT}/@{FILENAME}.te" resetvectorDatafile="${DEST_DIR_OUTPUT}/ResetVec.@{FILEEXT}"\r
1334 outputfile="${DEST_DIR_OUTPUT}/@{FILENAME}.bin"/>\r
1335 \r
1336 <gensection inputfile="${DEST_DIR_OUTPUT}/@{FILENAME}.bin" \r
1337 outputfile="${DEST_DIR_OUTPUT}/@{FILENAME}.sec" \r
1338 sectiontype="EFI_SECTION_RAW"/>\r
1339 <POST.PROCESS/>\r
1340 </sequential>\r
1341 </OnDependency>\r
1342 </sequential>\r
1343 </macrodef>\r
1344 \r
878ddf1f 1345 <!--\r
1346 EFI_SECTION_FIRMWARE_VOLUME_IMAGE\r
1347 -->\r
1348 <macrodef name="EFI_SECTION_FIRMWARE_VOLUME_IMAGE">\r
1349 <attribute name="FILEPATH"/>\r
1350 <attribute name="FILENAME"/>\r
1351 <attribute name="FILEEXT" default="fv"/>\r
1352\r
1353 <element name="PRE.PROCESS" optional="yes"/>\r
1354 <element name="POST.PROCESS" optional="yes"/>\r
1355\r
1356 <sequential>\r
1357 <OnDependency>\r
1358 <sourcefiles>\r
22e0585c 1359 <file name="${FV_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}"/>\r
878ddf1f 1360 </sourcefiles>\r
1361 <targetfiles>\r
22e0585c 1362 <file name="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}fv.sec"/>\r
878ddf1f 1363 </targetfiles>\r
1364\r
1365 <sequential>\r
1366 <PRE.PROCESS/>\r
5fc17c92 1367 \r
1368 <copy file="${FV_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}" \r
1369 tofile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}" \r
878ddf1f 1370 overwrite="true"/>\r
5fc17c92 1371 <gensection inputfile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}" \r
1372 outputfile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}fv.sec" \r
878ddf1f 1373 sectiontype="EFI_SECTION_FIRMWARE_VOLUME_IMAGE"/>\r
5fc17c92 1374 \r
878ddf1f 1375 <POST.PROCESS/>\r
1376 </sequential>\r
1377 </OnDependency>\r
1378 </sequential>\r
1379 </macrodef>\r
1380\r
1381 <!--\r
1382 Binary\r
1383 -->\r
1384 <macrodef name="Build_Binary">\r
1385 <attribute name="FILEPATH"/>\r
1386 <attribute name="FILENAME"/>\r
1387 <attribute name="FILEEXT" default="bin"/>\r
1388\r
1389 <element name="EXTRA.INC" optional="yes"/>\r
1390 <element name="EXTRA.ARG" optional="yes"/>\r
1391\r
1392 <sequential>\r
5fc17c92 1393 <copy file="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}" \r
22e0585c 1394 tofile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.bin"/>\r
878ddf1f 1395 </sequential>\r
1396 </macrodef>\r
d6123759 1397 \r
473f57d4 1398 <!--\r
1399 Microcode\r
1400 -->\r
1401 <macrodef name="Build_MICROCODE">\r
1402 <attribute name="FILEPATH"/>\r
1403 <attribute name="FILENAME"/>\r
1404 <attribute name="FILEEXT" default="TXT"/>\r
1405\r
1406 <element name="EXTRA.INC" optional="yes"/>\r
1407 <element name="EXTRA.ARG" optional="yes"/>\r
1408\r
1409 <sequential>\r
50017606 1410 <mkdir dir="${TARGET_DIR}/Microcode"/>\r
1411 <flashmap MCIFile="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}" MCOFILE="${TARGET_DIR}/Microcode/@{FILENAME}.bin"/>\r
473f57d4 1412 </sequential>\r
1413 </macrodef> \r
878ddf1f 1414\r
1415 <!--\r
1416 Graphics (bmp, ...)\r
1417 -->\r
d6123759 1418 <macrodef name="Build_BMP">\r
878ddf1f 1419 <attribute name="FILEPATH"/>\r
473f57d4 1420 <attribute name="FILENAME"/> \r
878ddf1f 1421 <attribute name="FILEEXT" default="bmp"/>\r
1422\r
1423 <element name="EXTRA.INC" optional="yes"/>\r
1424 <element name="EXTRA.ARG" optional="yes"/>\r
1425\r
1426 <sequential>\r
5fc17c92 1427 <copy file="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}" \r
22e0585c 1428 tofile="${DEST_DIR_OUTPUT}/@{FILEPATH}/@{FILENAME}.bin"/>\r
878ddf1f 1429 </sequential>\r
5fc17c92 1430 </macrodef> \r
d6123759 1431\r
1432 <!--\r
1433 build EFI file\r
1434 -->\r
878ddf1f 1435 <macrodef name="Build_EFI">\r
1436 <attribute name="FILEPATH"/>\r
1437 <attribute name="FILENAME"/>\r
1438 <attribute name="FILEEXT" default="efi"/>\r
1439\r
1440 <element name="EXTRA.INC" optional="yes"/>\r
1441 <element name="EXTRA.ARG" optional="yes"/>\r
1442\r
1443 <sequential>\r
5fc17c92 1444 <mkdir dir="${MODULE_DIR}/@{FILEPATH}" /> \r
1445 <copy file="${MODULE_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}" \r
22e0585c 1446 tofile="${DEST_DIR_OUTPUT}/${BASE_NAME}.efi"/>\r
878ddf1f 1447 </sequential>\r
1448 </macrodef>\r
380191dd 1449 \r
1450 <!-- \r
1451 Build macro for Apriori\r
1452 -->\r
1453 <macrodef name="Build_Apriori">\r
1454 <attribute name="FILEPATH" default="."/>\r
1455 <attribute name="FILENAME"/>\r
1456 <attribute name="FILEEXT" default="apr"/>\r
1457 <attribute name="GUID"/>\r
1458\r
1459 <sequential>\r
1460 <mkdir dir="${FV_DIR}/Apriori" />\r
1461 <gensection inputfile="${FV_DIR}/@{FILEPATH}/@{FILENAME}.@{FILEEXT}" \r
1462 outputfile="${FV_DIR}/Apriori/@{FILENAME}.sec" \r
1463 sectiontype="EFI_SECTION_RAW"/>\r
1464\r
1465 <genffsfile BaseName="@{FILENAME}" ffsATTRIBCHECKSUM="TRUE" ffsFILETYPE="EFI_FV_FILETYPE_FREEFORM" \r
1466 fileGuid="@{GUID}" moduleType="BASE" outputDir="${FV_DIR}">\r
1467 <sectFile fileName="${FV_DIR}/Apriori/@{FILENAME}.sec"/>\r
1468 </genffsfile>\r
1469 \r
1470 </sequential>\r
1471 </macrodef>\r
878ddf1f 1472</project>\r