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