From 9508d0fa4fb2cd2ff03604bc3b1b1abf8f69ccb6 Mon Sep 17 00:00:00 2001 From: lgao4 Date: Fri, 16 Dec 2011 08:52:13 +0000 Subject: [PATCH] Sync BaseTool trunk (version r2474) into EDKII BaseTools. Signed-off-by: lgao4 Reviewed-by: gikidy git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@12883 6f19259b-4bc3-4df7-8a09-765794883524 --- BaseTools/Bin/Win32/BPDG.exe | Bin 579301 -> 579301 bytes BaseTools/Bin/Win32/BootSectImage.exe | Bin 434176 -> 434176 bytes BaseTools/Bin/Win32/EfiLdrImage.exe | Bin 421888 -> 421888 bytes BaseTools/Bin/Win32/EfiRom.exe | Bin 446464 -> 446464 bytes BaseTools/Bin/Win32/Fpd2Dsc.exe | Bin 1432708 -> 1432708 bytes BaseTools/Bin/Win32/GenBootSector.exe | Bin 425984 -> 425984 bytes BaseTools/Bin/Win32/GenCrc32.exe | Bin 425984 -> 425984 bytes BaseTools/Bin/Win32/GenDepex.exe | Bin 637672 -> 637672 bytes BaseTools/Bin/Win32/GenFds.exe | Bin 1646441 -> 1646631 bytes BaseTools/Bin/Win32/GenFfs.exe | Bin 430080 -> 430080 bytes BaseTools/Bin/Win32/GenFv.exe | Bin 479232 -> 479232 bytes BaseTools/Bin/Win32/GenFw.exe | Bin 495616 -> 495616 bytes BaseTools/Bin/Win32/GenPage.exe | Bin 421888 -> 421888 bytes BaseTools/Bin/Win32/GenPatchPcdTable.exe | Bin 631676 -> 631676 bytes BaseTools/Bin/Win32/GenSec.exe | Bin 446464 -> 446464 bytes BaseTools/Bin/Win32/GenVtf.exe | Bin 446464 -> 446464 bytes BaseTools/Bin/Win32/LzmaCompress.exe | Bin 397312 -> 397312 bytes BaseTools/Bin/Win32/MigrationMsa2Inf.exe | Bin 1378094 -> 1378094 bytes BaseTools/Bin/Win32/PatchPcdValue.exe | Bin 563443 -> 563443 bytes BaseTools/Bin/Win32/Spd2Dec.exe | Bin 665034 -> 665034 bytes BaseTools/Bin/Win32/Split.exe | Bin 425984 -> 425984 bytes BaseTools/Bin/Win32/TargetTool.exe | Bin 585291 -> 585291 bytes BaseTools/Bin/Win32/TianoCompress.exe | Bin 434176 -> 434176 bytes BaseTools/Bin/Win32/Trim.exe | Bin 843112 -> 843112 bytes BaseTools/Bin/Win32/UPT.exe | Bin 2331847 -> 2331295 bytes BaseTools/Bin/Win32/VfrCompile.exe | Bin 1277952 -> 1277952 bytes BaseTools/Bin/Win32/VolInfo.exe | Bin 471040 -> 471040 bytes BaseTools/Bin/Win32/build.exe | Bin 3065710 -> 3066339 bytes BaseTools/Conf/tools_def.template | 2 +- .../Source/C/Include/Common/BuildVersion.h | 20 +++++++-- BaseTools/Source/Python/AutoGen/AutoGen.py | 22 ++++++++- BaseTools/Source/Python/AutoGen/GenC.py | 29 ++++++++++++ .../Source/Python/Common/BuildVersion.py | 17 ++++++- BaseTools/Source/Python/Ecc/Ecc.py | 42 ++++++++++++++++-- .../Ecc/MetaFileWorkspace/MetaFileParser.py | 8 ++-- BaseTools/Source/Python/GenFds/FdfParser.py | 2 +- BaseTools/Source/Python/GenFds/Fv.py | 2 +- BaseTools/Source/Python/UPT/BuildVersion.py | 21 ++++++++- BaseTools/Source/Python/UPT/InstallPkg.py | 2 +- .../Python/UPT/Library/ParserValidate.py | 2 +- BaseTools/Source/Python/UPT/Library/String.py | 29 ------------ .../Source/Python/UPT/Parser/InfParser.py | 2 +- .../Python/UPT/PomAdapter/InfPomAlignment.py | 1 - .../Python/Workspace/WorkspaceDatabase.py | 19 ++++++-- BaseTools/Source/Python/build/build.py | 19 +++----- 45 files changed, 171 insertions(+), 68 deletions(-) diff --git a/BaseTools/Bin/Win32/BPDG.exe b/BaseTools/Bin/Win32/BPDG.exe index d67e1b67db3db1c90f07d918be7df4d3f3ce6aef..8cb7362fa873b4754ca5764ec0d070c9fd44a659 100644 GIT binary patch delta 346 zcmaF5R{7~#GfpoL}Mm%lgSB*P0|7k3=G9U%n;zs z%pw9}FgO5}H+^~%HTiF%3UejX>&+@jI}dV%0!3FoTAx1ssWPKH^CG6#+u2nZ*^Y34 zRM#9Hse7oZd#`}Y209A{YIUY(wNn!^^X1LTwGD^7D1!F{k@=?sS?Bf{a%XF2S_k|5`9 b?>fs7$P9PO_Qw}E@|oaPZ;!gn(aj71BJ_h; delta 346 zcmaF5R{7~#0A*DI(@-u#J| z3usDv=ugJ&p+A|{$AfKPy)6H5I!`3C6v&2l%}8b-X4$S8$!d`cw#hctL~(lNF;-=e zP3`^1Sb>-gh}pOIALBT~0{80lzWzOkZ)DqX_PU?Mi1jBpDG7cRtHu50(Tu ccYD`ajzDI(Ted&Gz>&`cw|aZjWsYuU0DX#v*#H0l diff --git a/BaseTools/Bin/Win32/BootSectImage.exe b/BaseTools/Bin/Win32/BootSectImage.exe index 7af47afbf9697a568463fb8e3f767bf0d913a710..368c269553a7332884c61ec99fdae596793eaa26 100755 GIT binary patch delta 73 zcmZoTAk}a{YQh8NS4^)PAGbbcY<4`V*G#V)AGbbcY<2Vxv8Bi|nVW3q3Sj#t4*)J_AesOG delta 73 zcmZp8AldLha>4`VhR^pJAGbbcY<%BWKN*^xD3}h%H5y$;@CoR{+~Lc>s0!B2EAR diff --git a/BaseTools/Bin/Win32/EfiRom.exe b/BaseTools/Bin/Win32/EfiRom.exe index 4b3de928143be93ccd93234b978322b5bfe9e825..5de62fd7836954c3ce455e862b79e596f75c45d2 100755 GIT binary patch delta 73 zcmZozAlXgP#sG>@Bf0

wo*(DD?|IHS&vU#(<=&z4SK1Uy zj`!~2e9CFk+W<@d)ESH+xo9J zlaO0xXK8WEEtA00Ew{W_FcwHvKb&N^m*cozju`zWE9n>mJ#u&Q5mJ{6S!DT*=@=== zQQAn+MV<0~9vDUYv|NHhf>MG?LL9YEt2>`!%Yjf8kO_}wH?~~!Xv8&-machp^`&Z; z)G~_~PLbMiU6S0xN2oZiv;7-&<7)-!>(-~TIy%{{Khl7FxA=|_*`8?Fhxz48ymU)T)PBN&V$3HAks4t1l%E_eex$$C?h9Tyz_IeL&hQ-Kpj`>cW*7v_tW&s32Uxq#+S$>7H~G0#qnSc5Q#5xXTi8-yhp zhU|za9fckq$7MG|tH+=~g|EzSI`|$IWHEcm2M9z=%h{vVkn(50qIVz9*u38U5VD)Q zqYucGQ(|Sbu;rA9kkTzDU**zdi@#nT3Py)HjvMBP#;Y}vJAP21_MgoNX(<6a`TAOW zf>akLrjj!kl!^CCK_ggaco7LA5=F>FBvI>({N7_MS^nfZPXg}by;yS1oh+=m6?Dz5 zY&$DAizV&t1B;}2QfcOYY(}UssZ5QvI=Ez6AWw%>nd~2(9#S2#{_xqQO8CLd(=YMqoHAsHZwuaMyvZcRz&1pt%Vn75emFoTHxIg9ml`l zLKYLT)#zfH^)i>!@zo_Wvbm zEBYK%uUOHCZSuN{LebWG-Eu z(PW@TlhLz|)3v5;A12Rakb{mzWYAQI{L!ZT405srFc~VQ`|t+xY`=)f2cvjmi$v#r zuq44F+aOBc!V@X>$`*z?{7^2#TNXAQ{Qx0JJX`V!M(~m)N~@+o5>vt;8>YdBmn=TI z=QC8r)1sYoa3uDY1w_Z^p)jV4xk!Uh5>Mk)5N=~lmH}A`f-CNE#R9nF&IT5s?7yGX Y_ysbh*a6y9ya+e(#LS_AMR+6m2MCaMRsaA1 diff --git a/BaseTools/Bin/Win32/GenBootSector.exe b/BaseTools/Bin/Win32/GenBootSector.exe index 51603b91e348342b10cd60723c3f5cf9f08baae7..cb57ba77eac6abac282b7696e4175d89b8a2841d 100755 GIT binary patch delta 73 zcmZo@kZNd(2m?@b>3{tb6YXP*R8J^TVFG^zGiNH&9e11>(2m?@b>3{tb6YX+&?}`;dzOR dOJ|kmYUy_q&u!mgz-FMxWM;7aSs%#z$@b>G0tVbUR*f1Aqo6mRg dT*bn?XqU)kP&#j*sTR$_keg^Vbwti-P7yuI9em#)&=mUZI+&jOCe4OgO cR{#I}Z5vlgZC_)=79-1KX0V+rfbE+;0Dr0@(f|Me diff --git a/BaseTools/Bin/Win32/GenDepex.exe b/BaseTools/Bin/Win32/GenDepex.exe index d2013b73eb5328fca6bda006f506df76558b6fb7..b17f12ed7bbf3142cbf9d138b54d7ffd43652086 100755 GIT binary patch delta 437 zcmaFyRqe%BwGCVfLJlnx>^;Lj247)jU;trJhUxa}IK|mFf8yn;WO}{XO5vCbM+Hz( zcFSg_$sDQb%uktKPc}+5W->RKoSxbwEx^FQPz=Nj0p83kA|M6>$jqisPogHXq^U52 z4AD;07t;cX9@uy6@wSx=3?R%8ROy_bo134f@0(eitXEK(47IemrDl6e4dazn93VY) zOxNS^68BhOft;fOt0G)STJp0V8I;v6s%|E*%;C3 ze`Q&eL3-Mi*}i)xr!FG^ls}{f delta 437 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 R%`HCxvnzIf`WC%8|6h^iBtrlI diff --git a/BaseTools/Bin/Win32/GenFfs.exe b/BaseTools/Bin/Win32/GenFfs.exe index 37a069e265b332182b133e0317479103ee4c4894..bf3ab699bdb3e2bbf5f530cd6155f89f4508fd3e 100755 GIT binary patch delta 72 zcmV-O0Jr~upc;Un8j#=v?*i+AxJt9h3f)^>jQ=B1hwl0>F@*a0_(Te@dfqZ5co1? fU`5_wMUl79sWWgmaJSsj20R@CH#D~z@CN2zg>EF! delta 73 zcmV-P0Ji^tpdEmq9gye)hx6Wn>xJt9h3f)^>jQ=B1hwl0>F@)G^WL}D@dfqZ5Y~hK fh5vr~K%<=M5uG2JL$}=020R@CHZZpu@CN2zK6AGbbcY<9VXJj g?Y+rqVvkE|mXNvpc9rjJDw<4Y2HU+9*tg{a09>sgG5`Po diff --git a/BaseTools/Bin/Win32/GenPage.exe b/BaseTools/Bin/Win32/GenPage.exe index 3f70426fc82e33e5c301cb1bf6e5b788c235af3b..e7f673252f75238882d17d1bd26f98466795afd5 100755 GIT binary patch delta 73 zcmZp8AldLha>4`V&rGiyAGbbcY<4`VuFv-xAGbbcY<^;Lj22U1JP-U)UdcE07;g}0Y1yD4*Wi!)cj#PE#r%bOW z8>JdEnVU>bPi>n1e+DzF7y}Rlcr&wzfEWxQLz+H4iJHukrUEjgSvzgJb{eB)4cPcP zrtY)Ta~?5jf~2<3c*OWtfE}b`SG>>kp3jW3AmR2kpBcBW`OL(e3D&amY>epi?J>;C zV7a?7%AR=V}pHcl2&P-TAq_3maXg<~!p5gG0Fe?J6Xp3IS|&RqHV z-ejXxVhV^O(Sl%|(L~;7Ar>tQ4=?|W=&I1cCem+fmdfPKrd9bz> z&sf`6JY(Cw;u(9*S+M;2+?<%{I$Jovj@%x+g(Kk+SR51p(|1qf+ywXd^wQ~^wqQAs zzqaq1&KbrC=7K#VF_Y6C=7sHXGdY8p!Ezv1Z{IP8a}yJo3wC7Dd`?R+59GG(o9A;* Pfk=X!vfY0Xr!FG^^p>Pa diff --git a/BaseTools/Bin/Win32/GenSec.exe b/BaseTools/Bin/Win32/GenSec.exe index f8f11e82c1a86edc99616b0ccb01b7ea9eca8cb7..1274d352bcb2e054a63c6ac14ddff81a899d3d59 100755 GIT binary patch delta 73 zcmV-P0Ji^tpc{ao8<5}w^8)LEb5C!TS fkpTARL7v%$K^PejbGMXo2G}10H#E0yk_M7JIfWtl delta 73 zcmV-P0Ji^tpc{ao8<5}wi}T)rb5NB>B fY({n` dw~4E7%714H-?+WyGOLU{lbONxMW0yXWC1?6A^HFS diff --git a/BaseTools/Bin/Win32/MigrationMsa2Inf.exe b/BaseTools/Bin/Win32/MigrationMsa2Inf.exe index 6a96e513fc7ac73d270cd59bc7f87772eba087d2..219b181d12ae1b0b539fcbf7989c883b6ff07988 100755 GIT binary patch delta 317 zcmZ427qYG|q@jheg{g(Pg{6hHg{_6Xg<}inqf8EmmI?MN&&G&Of0fCp%v{Ozx?LcP z6NtHhm>YA#5Szdi~ofyL!N3ErH^Q2|t+-Ljc!T91%A^HZkR)3thp zjG4?$rpNaPHBA@zB*fbOtVd}3vmW8RM_@|>9)!hAkI5HNW&v92H(9UEbo$+;oVMG) z=8NoYhkIrFuJ0mGIN+|_x=eHnBf@P-Ork~z7tLW3Er+{fyEL;V CFMJpP delta 316 zcmZ427qYG|q@jheg{g(Pg{6hHg{_6Xg<}inqf8FP8Ey8yi=Hx1f0fCp%>4fA-FAU2 zP9Ww2Vs0Sj0b*Vt<^y8>?E+Z>o6W#_9^TXun|^wMfF?-K_U{V>9!}se0Gc%+%X{7Q z2Zn+&%)H<3ZvSs6_<28A{6*WAi_?F76jTC>%YPEQIg=wIquu`Rhrr9zdW6)OD?i_x zuGJ%C%w%RTJ-$b%Y4U`>tnJTwgtkBH5zc!Aw$nD%L~(jdzKAjl&`!U}dTplD?=I!E z-TpOSWN$m%C);;@7kR<~cjVS(qFWddPD^4EH9|OO4wGm(+!@=YnMM7W;5Kb9WEI`Z F2mmi_gRKAn diff --git a/BaseTools/Bin/Win32/PatchPcdValue.exe b/BaseTools/Bin/Win32/PatchPcdValue.exe index ac5121474465ae06f5f62adfbf51c198780587d7..c635d3ac11445947d1a8365d48d928a551d4c872 100755 GIT binary patch delta 273 zcmeyoQR(wWr42t5I4W8u*k`wFW}3{HsLuS9>GfpoL}Mm%lgSB*P0|7k3=G9U%n;zs z%pw9}FgO5}H+^~%HTiF%3UejX>t>at?J7x(mNgt8nL4KKv(r=WF=~ROwokmr_*OvO z3Mejfd2X$>I0FL+^8ihWkIzla%!`lLE2vD~{E3&Vfa!Jn()Wx&%ml>D+n2s)v7ZSx zG2lU1%=9-MtjZu0+l4w=ftU@5*|!UIa-3m-JAeAKUJhHZ4v_1%Yxi-4F(RDQ+0S9m W0dvUq3;i4uSmCB`&zQ>5%?tpe{$*zX delta 273 zcmeyoQR(wWr42t5I3hCI?f-rVygZpPQJuN+^S#O1iN;K329pyKo1~c;7#NCym?6NM znMDM|U{IXVW{SiJ5uv@p=W7$(uj%ay|Qcw|(h*Mj&PaV&?5j-?P}y z1e<7^YN9y(O$Vzo$i#M`PF5gh17h~=LY*9ESm4f|{;Ze77OVs0y6xJ19AS(ICw2C7 Y*mJ-fvi(9o#{^cm>Dx1=a&$8T0GWDfcK`qY diff --git a/BaseTools/Bin/Win32/Spd2Dec.exe b/BaseTools/Bin/Win32/Spd2Dec.exe index e003096aa5bd864a61c734aa3e9a64cc6c8e4deb..072f648225470697731384f83c7205a6c6e43f05 100755 GIT binary patch delta 627 zcmX?gTI1AdjSXB191blL>^;Lj22U1JP-U)UdcE07;g}0pwCU56sL33uDj?Bj{nYLH zsf?C2V3|6m?z7Vi9x`fzq_)p_$oN)(!wP6lZnxgt=@UOO$}kr&y>8#|iE;aePfT0w zIDCO}A7;D=nVxINtj|0NsAs+*^Tjl@xKXkljGM}D#hTQ<{hdF21kBEZBU+PcaH$CGKyADVkWQE!Gvya%X zZvh)tFTr$a`kLt+GAuyD{H8CoVw2qdbUMfTIbdgq?Ovuf{f-GIIFz?Dn{p;R0*iy9 zWO}wZ*CsFz6cyW5CAh*E!CY|oH%oHa!$W=hDM>DIW<)^0l;Ju6RtgT@jj~+J!Ae1a zIz2&-D-&WWFx0kRl;etK0&~FuWunMs3Fd*rr&N(E7ZD<_6uI&c;gF!jRg3WbQzfnz WxOcY~Ds!nooC@;a_PHutx{LsQclGlC delta 627 zcmX?gTI1AdjSXB19EvmA>=V}pHcl2&P-TAq_3maXg<~#Y(V4e(u21GjRRM`M>!)tl zPi3^M0m~Q`sp(BGc*v*;lG;A!A>&&C4r!n{4;rFAOrQ9PQHJ^1*SqZ-J~3|J@QG=w z9fvwlPUqi||I>2~ne~}}1NF=|WWJaNHp_R>Q|9RvGnkdZX3d+yY_wDjWY&z=%4v+k z3=AO5&A`Cmlb@IpT#%wyP?@~>6E7Fgg6-dIS*C@84f!hje(v-slUZ~@hO{4<%(DH+ zWY+kbU^&}V6UFJ;xoltyrU&M-%>xTBem+fm`uAKmd9W7AJhttUdF=kWV1JZ~xG+sG zn9Z&P^2he6v)RuWfc>zU@!`DbnP=DyzhW&^rSbV+ZwfECA9AqnhDGW2b75-mnE174xds*u3SWjyi(-KLxe+u5?3w4_fM6$ YTHxN@UZ~8a0&yzHf7|D(aOpAv0PHpd^Z)<= diff --git a/BaseTools/Bin/Win32/Split.exe b/BaseTools/Bin/Win32/Split.exe index 5285c71db9c309b5bac293da521649537c3e175b..c5fead3786ba5d9a5e0606fcd75ab66397eec8eb 100755 GIT binary patch delta 73 zcmZo@kZNd&FC;@b>44tf~(L3=-<@PhD;8 dJ@HSjJV#&B#O*RpY;R&FC;@b>44tf~(L=KS<14vP5f dytCf7V)gz9joW3M*xtx8nHg;7N?`jY4*+GfpoL}Mm%lgSB*P0|7k3=G9U%n;zs z%pw9}FgO5}H+^~%HTiF%3UejX>t>at?J7x(mNgt8nL4KKv(r=WF=~ROwokmr_*OvO z3MhVF(c);dE&~Gy^8ihWkIzla%!`lLE2vD~{E3&Vfa!Jn()Wzpm%e98r~{j{@@$Og zblyB>Wsphj#(B&@%(C4$kM%@8SU%uESj=?hd#n(7&3mlvn)ld%n0>qEJ&rRhaBofj z`-sC9tOMlg?M{z5!Wa=wUGRj%o&)BI-|p~&qk;);+4cjkIJ%hu;Inm> delta 312 zcmX?oNBQ&}1`s zp3a-ctPC=#-8hdKh*`E9=dqs12g}>0nkY_ZzQ+oY*SyEtu6d6Qh}pMm-s3pK0{7PR zzmGU^Wc#-2VItM<6rY_U#TYI4YRnmTf=qildtu078s; Aa{vGU diff --git a/BaseTools/Bin/Win32/TianoCompress.exe b/BaseTools/Bin/Win32/TianoCompress.exe index 58d2972ec9952f16b08d109136b19bfc3b0fa157..e47070c24d788af1e16fbd01185e1666487a7ee7 100755 GIT binary patch delta 73 zcmV-P0Ji^tz#4$S8j#=v_yX&Js61BL@Hg diff --git a/BaseTools/Bin/Win32/Trim.exe b/BaseTools/Bin/Win32/Trim.exe index 563ca64a864246c8c2bf45e06041618f9768c4c9..25f919877877b63e2618f99094033ebdab245816 100755 GIT binary patch delta 425 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 ZO=~o{ZZ|B!Iu3;;HN3rxGKOR8{{Yu{v`PQ~ delta 8596 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 SJ<~AjZhC_I>qq2K>iPc&BRog| diff --git a/BaseTools/Bin/Win32/VfrCompile.exe b/BaseTools/Bin/Win32/VfrCompile.exe index 4a14a12c0ae3e3d2e01c302bc74b727e127f5dad..ccb69a263ec5f9f3e0ccbec3d49f986044247ccb 100755 GIT binary patch delta 126 zcmZo@@M~!BoA7~|nfZ0&=hn}Rt)H1%KQp&}W@-J*+WMKT^)q|xXO7m-oUNa^T0e8Q ze&*TwnK#i9qt(#{Y#>HLEw9LLftaI~!=v_= W3O*p_2Vwyr76f9U?JX6;HS7TW3^p79 delta 126 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 VICkyQozUU98g06{2nV0^{{Yd+!%_eM delta 32317 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 + This program and the accompanying materials + are licensed and made available under the terms and conditions of the BSD License + which accompanies this distribution. The full text of the license may be found at + http://opensource.org/licenses/bsd-license.php + + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. + + File Name: BuildVersion.h + +**/ + +#define __BUILD_VERSION "Build 2474" diff --git a/BaseTools/Source/Python/AutoGen/AutoGen.py b/BaseTools/Source/Python/AutoGen/AutoGen.py index cb3369ffdf..894ec8dcd8 100644 --- a/BaseTools/Source/Python/AutoGen/AutoGen.py +++ b/BaseTools/Source/Python/AutoGen/AutoGen.py @@ -173,7 +173,8 @@ class WorkspaceAutoGen(AutoGen): # @param SkuId SKU id from command line # def _Init(self, WorkspaceDir, ActivePlatform, Target, Toolchain, ArchList, MetaFileDb, - BuildConfig, ToolDefinition, FlashDefinitionFile='', Fds=None, Fvs=None, Caps=None, SkuId='', UniFlag=None): + BuildConfig, ToolDefinition, FlashDefinitionFile='', Fds=None, Fvs=None, Caps=None, SkuId='', UniFlag=None, + Progress=None, BuildModule=None): if Fds is None: Fds = [] if Fvs is None: @@ -236,8 +237,25 @@ class WorkspaceAutoGen(AutoGen): # parse FDF file to get PCDs in it, if any if not self.FdfFile: self.FdfFile = self.Platform.FlashDefinition - EdkLogger.verbose("\nFLASH_DEFINITION = %s" % self.FdfFile) + + EdkLogger.info("") + if self.ArchList: + EdkLogger.info('%-16s = %s' % ("Architecture(s)", ' '.join(self.ArchList))) + EdkLogger.info('%-16s = %s' % ("Build target", self.BuildTarget)) + EdkLogger.info('%-16s = %s' % ("Toolchain",self.ToolChain)) + + EdkLogger.info('\n%-24s = %s' % ("Active Platform", self.Platform)) + if BuildModule: + EdkLogger.info('%-24s = %s' % ("Active Module", BuildModule)) + + if self.FdfFile: + EdkLogger.info('%-24s = %s' % ("Flash Image Definition", self.FdfFile)) + EdkLogger.verbose("\nFLASH_DEFINITION = %s" % self.FdfFile) + + if Progress: + Progress.Start("\nProcessing meta-data") + if self.FdfFile: # # Mark now build in AutoGen Phase diff --git a/BaseTools/Source/Python/AutoGen/GenC.py b/BaseTools/Source/Python/AutoGen/GenC.py index 530dfd7c97..63131cee24 100644 --- a/BaseTools/Source/Python/AutoGen/GenC.py +++ b/BaseTools/Source/Python/AutoGen/GenC.py @@ -1575,6 +1575,35 @@ def CreatePcdDatabasePhaseSpecificAutoGen (Platform, Phase): if NumberOfLocalTokens == 0: AutoGenC.Append(gEmptyPcdDatabaseAutoGenC.Replace(Dict)) else: + # + # Update Size Table to the right order, it should be same with LocalTokenNumberTable + # + SizeCNameTempList = [] + SizeGuidTempList = [] + SizeCurLenTempList = [] + SizeMaxLenTempList = [] + ReOrderFlag = True + + if len(Dict['SIZE_TABLE_CNAME']) == 1: + if not (Dict['SIZE_TABLE_CNAME'][0] and Dict['SIZE_TABLE_GUID'][0]): + ReOrderFlag = False + + if ReOrderFlag: + for Count in range(len(Dict['TOKEN_CNAME'])): + for Count1 in range(len(Dict['SIZE_TABLE_CNAME'])): + if Dict['TOKEN_CNAME'][Count] == Dict['SIZE_TABLE_CNAME'][Count1] and \ + Dict['TOKEN_GUID'][Count] == Dict['SIZE_TABLE_GUID'][Count1]: + SizeCNameTempList.append(Dict['SIZE_TABLE_CNAME'][Count1]) + SizeGuidTempList.append(Dict['SIZE_TABLE_GUID'][Count1]) + SizeCurLenTempList.append(Dict['SIZE_TABLE_CURRENT_LENGTH'][Count1]) + SizeMaxLenTempList.append(Dict['SIZE_TABLE_MAXIMUM_LENGTH'][Count1]) + + for Count in range(len(Dict['SIZE_TABLE_CNAME'])): + Dict['SIZE_TABLE_CNAME'][Count] = SizeCNameTempList[Count] + Dict['SIZE_TABLE_GUID'][Count] = SizeGuidTempList[Count] + Dict['SIZE_TABLE_CURRENT_LENGTH'][Count] = SizeCurLenTempList[Count] + Dict['SIZE_TABLE_MAXIMUM_LENGTH'][Count] = SizeMaxLenTempList[Count] + AutoGenC.Append(gPcdDatabaseAutoGenC.Replace(Dict)) return AutoGenH, AutoGenC diff --git a/BaseTools/Source/Python/Common/BuildVersion.py b/BaseTools/Source/Python/Common/BuildVersion.py index fc3239135c..b6b02cf8ae 100644 --- a/BaseTools/Source/Python/Common/BuildVersion.py +++ b/BaseTools/Source/Python/Common/BuildVersion.py @@ -1,3 +1,16 @@ -#This file is for build version number auto generation +## @file # -gBUILD_VERSION = "Build 2460" +# This file is for build version number auto generation +# +# Copyright (c) 2011, Intel Corporation. All rights reserved.
+# +# This program and the accompanying materials are licensed and made available +# under the terms and conditions of the BSD License which accompanies this +# distribution. The full text of the license may be found at +# http://opensource.org/licenses/bsd-license.php +# +# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +# + +gBUILD_VERSION = "Build 2474" diff --git a/BaseTools/Source/Python/Ecc/Ecc.py b/BaseTools/Source/Python/Ecc/Ecc.py index ab438c7e86..e2e92ef672 100644 --- a/BaseTools/Source/Python/Ecc/Ecc.py +++ b/BaseTools/Source/Python/Ecc/Ecc.py @@ -22,12 +22,12 @@ from MetaDataParser import * from optparse import OptionParser from Configuration import Configuration from Check import Check - +import Common.GlobalData as GlobalData from Common.String import NormPath from Common.BuildVersion import gBUILD_VERSION from Common import BuildToolError - +from Common.Misc import PathClass from MetaFileWorkspace.MetaFileParser import DscParser from MetaFileWorkspace.MetaFileParser import DecParser from MetaFileWorkspace.MetaFileParser import InfParser @@ -61,7 +61,41 @@ class Ecc(object): # Parse the options and args self.ParseOption() - + + # + # Check EFI_SOURCE (Edk build convention). EDK_SOURCE will always point to ECP + # + WorkspaceDir = os.path.normcase(os.path.normpath(os.environ["WORKSPACE"])) + os.environ["WORKSPACE"] = WorkspaceDir + if "ECP_SOURCE" not in os.environ: + os.environ["ECP_SOURCE"] = os.path.join(WorkspaceDir, GlobalData.gEdkCompatibilityPkg) + if "EFI_SOURCE" not in os.environ: + os.environ["EFI_SOURCE"] = os.environ["ECP_SOURCE"] + if "EDK_SOURCE" not in os.environ: + os.environ["EDK_SOURCE"] = os.environ["ECP_SOURCE"] + + # + # Unify case of characters on case-insensitive systems + # + EfiSourceDir = os.path.normcase(os.path.normpath(os.environ["EFI_SOURCE"])) + EdkSourceDir = os.path.normcase(os.path.normpath(os.environ["EDK_SOURCE"])) + EcpSourceDir = os.path.normcase(os.path.normpath(os.environ["ECP_SOURCE"])) + + os.environ["EFI_SOURCE"] = EfiSourceDir + os.environ["EDK_SOURCE"] = EdkSourceDir + os.environ["ECP_SOURCE"] = EcpSourceDir + + GlobalData.gWorkspace = WorkspaceDir + GlobalData.gEfiSource = EfiSourceDir + GlobalData.gEdkSource = EdkSourceDir + GlobalData.gEcpSource = EcpSourceDir + + GlobalData.gGlobalDefines["WORKSPACE"] = WorkspaceDir + GlobalData.gGlobalDefines["EFI_SOURCE"] = EfiSourceDir + GlobalData.gGlobalDefines["EDK_SOURCE"] = EdkSourceDir + GlobalData.gGlobalDefines["ECP_SOURCE"] = EcpSourceDir + + # Generate checkpoints list EccGlobalData.gConfig = Configuration(self.ConfigFile) @@ -152,7 +186,7 @@ class Ecc(object): EdkLogger.quiet("Parsing %s" % Filename) Op.write("%s\r" % Filename) #Dsc(Filename, True, True, EccGlobalData.gWorkspace, EccGlobalData.gDb) - self.MetaFile = DscParser(Filename, MODEL_FILE_DSC, MetaFileStorage(EccGlobalData.gDb.TblDsc.Cur, Filename, MODEL_FILE_DSC, True)) + self.MetaFile = DscParser(PathClass(Filename, Root), MODEL_FILE_DSC, MetaFileStorage(EccGlobalData.gDb.TblDsc.Cur, Filename, MODEL_FILE_DSC, True)) # alwasy do post-process, in case of macros change self.MetaFile.DoPostProcess() self.MetaFile.Start() diff --git a/BaseTools/Source/Python/Ecc/MetaFileWorkspace/MetaFileParser.py b/BaseTools/Source/Python/Ecc/MetaFileWorkspace/MetaFileParser.py index fc29bafc58..9ca00f043b 100644 --- a/BaseTools/Source/Python/Ecc/MetaFileWorkspace/MetaFileParser.py +++ b/BaseTools/Source/Python/Ecc/MetaFileWorkspace/MetaFileParser.py @@ -770,13 +770,13 @@ class DscParser(MetaFileParser): def Start(self): Content = '' try: - Content = open(str(self.MetaFile), 'r').readlines() + Content = open(str(self.MetaFile.Path), 'r').readlines() except: EdkLogger.error("Parser", FILE_READ_FAILURE, ExtraData=self.MetaFile) # # Insert a record for file # - Filename = NormPath(self.MetaFile) + Filename = NormPath(self.MetaFile.Path) FileID = self.TblFile.GetFileId(Filename) if FileID: self.FileID = FileID @@ -1162,6 +1162,8 @@ class DscParser(MetaFileParser): self._IdMapping[Id] = self._LastItem RecordList = self._Table.GetAll() + self._Table.Drop() + self._RawTable.Drop() for Record in RecordList: EccGlobalData.gDb.TblDsc.Insert(Record[1],Record[2],Record[3],Record[4],Record[5],Record[6],Record[7],Record[8],Record[9],Record[10],Record[11],Record[12],Record[13],Record[14]) GlobalData.gPlatformDefines.update(self._FileLocalMacros) @@ -1300,7 +1302,7 @@ class DscParser(MetaFileParser): # elif "ECP_SOURCE" in GlobalData.gCommandLineDefines.keys(): __IncludeMacros['ECP_SOURCE'] = GlobalData.gCommandLineDefines['ECP_SOURCE'] - + __IncludeMacros['EFI_SOURCE'] = GlobalData.gGlobalDefines['EFI_SOURCE'] __IncludeMacros['EDK_SOURCE'] = GlobalData.gGlobalDefines['EDK_SOURCE'] # diff --git a/BaseTools/Source/Python/GenFds/FdfParser.py b/BaseTools/Source/Python/GenFds/FdfParser.py index bdb7a77770..7a569e88dd 100644 --- a/BaseTools/Source/Python/GenFds/FdfParser.py +++ b/BaseTools/Source/Python/GenFds/FdfParser.py @@ -679,7 +679,7 @@ class FdfParser: PreIndex = 0 StartPos = CurLine.find('$(', PreIndex) EndPos = CurLine.find(')', StartPos+2) - while StartPos != -1 and EndPos != -1: + while StartPos != -1 and EndPos != -1 and not (self.__Token == '!ifdef' or self.__Token == '!ifndef'): MacroName = CurLine[StartPos+2 : EndPos] MacorValue = self.__GetMacroValue(MacroName) if MacorValue != None: diff --git a/BaseTools/Source/Python/GenFds/Fv.py b/BaseTools/Source/Python/GenFds/Fv.py index fd5ad0e9ac..6c7a0503cf 100644 --- a/BaseTools/Source/Python/GenFds/Fv.py +++ b/BaseTools/Source/Python/GenFds/Fv.py @@ -316,7 +316,7 @@ class FV (FvClassObject): Buffer += pack('B', int(ByteList[Index1], 16)) Guid = self.FvNameGuid.split('-') - Buffer = pack('LHHBBBBBBBBL', + Buffer = pack('=LHHBBBBBBBBL', int(Guid[0], 16), int(Guid[1], 16), int(Guid[2], 16), diff --git a/BaseTools/Source/Python/UPT/BuildVersion.py b/BaseTools/Source/Python/UPT/BuildVersion.py index fc3239135c..bd5876dd5c 100644 --- a/BaseTools/Source/Python/UPT/BuildVersion.py +++ b/BaseTools/Source/Python/UPT/BuildVersion.py @@ -1,3 +1,20 @@ -#This file is for build version number auto generation +## @file # -gBUILD_VERSION = "Build 2460" +# This file is for build version number auto generation +# +# Copyright (c) 2011, Intel Corporation. All rights reserved.
+# +# This program and the accompanying materials are licensed and made available +# under the terms and conditions of the BSD License which accompanies this +# distribution. The full text of the license may be found at +# http://opensource.org/licenses/bsd-license.php +# +# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +# + +''' +Build version information +''' + +gBUILD_VERSION = "Build 2474" diff --git a/BaseTools/Source/Python/UPT/InstallPkg.py b/BaseTools/Source/Python/UPT/InstallPkg.py index 1c75dad80b..776196e8ea 100644 --- a/BaseTools/Source/Python/UPT/InstallPkg.py +++ b/BaseTools/Source/Python/UPT/InstallPkg.py @@ -403,7 +403,7 @@ def Main(Options = None): DestFile = os.path.normpath(os.path.join(DestDir, DistFileName)) if os.path.exists(DestFile): FileName, Ext = os.path.splitext(DistFileName) - NewFileName = FileName + '_' + DistPkg.Header.GetGuid() + '_' + DistPkg.Header.GetVersion() + '.' + Ext + NewFileName = FileName + '_' + DistPkg.Header.GetGuid() + '_' + DistPkg.Header.GetVersion() + Ext DestFile = os.path.normpath(os.path.join(DestDir, NewFileName)) if os.path.exists(DestFile): # diff --git a/BaseTools/Source/Python/UPT/Library/ParserValidate.py b/BaseTools/Source/Python/UPT/Library/ParserValidate.py index 8efb56a61a..860fb4f1dc 100644 --- a/BaseTools/Source/Python/UPT/Library/ParserValidate.py +++ b/BaseTools/Source/Python/UPT/Library/ParserValidate.py @@ -286,7 +286,7 @@ def IsValidInstallPath(Path): if os.path.isabs(Path): return False else: - if Path[1:2] == ':' or Path.find('\\') >=0: + if Path[1:2] == ':': return False if os.path.isabs(Path): return False diff --git a/BaseTools/Source/Python/UPT/Library/String.py b/BaseTools/Source/Python/UPT/Library/String.py index 526b2e66b4..2c5853ca93 100644 --- a/BaseTools/Source/Python/UPT/Library/String.py +++ b/BaseTools/Source/Python/UPT/Library/String.py @@ -643,35 +643,6 @@ def ConvertToSqlString(StringList): def ConvertToSqlString2(String): return String.replace("'", "''") -## RemoveBlockComment -# -# Remove comment block -# -# @param Lines: Block Comment Lines -# -def RemoveBlockComment(Lines): - IsFindBlockComment = False - ReservedLine = '' - NewLines = [] - - for Line in Lines: - Line = Line.strip() - # - # Remove comment block - # - if Line.find(DataType.TAB_COMMENT_EDK1_START) > -1: - ReservedLine = GetSplitList(Line, DataType.TAB_COMMENT_EDK1_START, 1)[0] - IsFindBlockComment = True - if Line.find(DataType.TAB_COMMENT_EDK1_END) > -1: - Line = ReservedLine + GetSplitList(Line, DataType.TAB_COMMENT_EDK1_END, 1)[1] - ReservedLine = '' - IsFindBlockComment = False - if IsFindBlockComment: - NewLines.append('') - continue - NewLines.append(Line) - return NewLines - ## GetStringOfList # # Get String of a List diff --git a/BaseTools/Source/Python/UPT/Parser/InfParser.py b/BaseTools/Source/Python/UPT/Parser/InfParser.py index 79f71448ee..fb90c396f7 100644 --- a/BaseTools/Source/Python/UPT/Parser/InfParser.py +++ b/BaseTools/Source/Python/UPT/Parser/InfParser.py @@ -339,7 +339,7 @@ class InfParser(InfSectionParser): # # Found the first section, No file header. # - if not DefineSectionParsedFlag: + if DefineSectionParsedFlag and not HeaderCommentEnd: Logger.Error("InfParser", FORMAT_INVALID, ST.ERR_INF_PARSER_HEADER_MISSGING, diff --git a/BaseTools/Source/Python/UPT/PomAdapter/InfPomAlignment.py b/BaseTools/Source/Python/UPT/PomAdapter/InfPomAlignment.py index 20daff0d32..a4a3107366 100644 --- a/BaseTools/Source/Python/UPT/PomAdapter/InfPomAlignment.py +++ b/BaseTools/Source/Python/UPT/PomAdapter/InfPomAlignment.py @@ -750,7 +750,6 @@ class InfPomAlignment(ModuleObject): BinaryObj = self.Parser.InfBinariesSection.GetBinary() BinaryData = BinaryObj.keys() - BinaryData.sort() # # If the INF file does not contain a [Sources] section, and the INF file does contain a [Binaries] section, diff --git a/BaseTools/Source/Python/Workspace/WorkspaceDatabase.py b/BaseTools/Source/Python/Workspace/WorkspaceDatabase.py index a8452a9f84..6ff33db329 100644 --- a/BaseTools/Source/Python/Workspace/WorkspaceDatabase.py +++ b/BaseTools/Source/Python/Workspace/WorkspaceDatabase.py @@ -383,10 +383,21 @@ class DscBuildData(PlatformBuildClassObject): self._LoadFixAddress = int (self._LoadFixAddress, 0) except: EdkLogger.error("build", PARAMETER_INVALID, "FIX_LOAD_TOP_MEMORY_ADDRESS %s is not valid dec or hex string" % (self._LoadFixAddress)) - if self._LoadFixAddress < 0: - EdkLogger.error("build", PARAMETER_INVALID, "FIX_LOAD_TOP_MEMORY_ADDRESS is set to the invalid negative value %s" % (self._LoadFixAddress)) - if self._LoadFixAddress != 0xFFFFFFFFFFFFFFFF and self._LoadFixAddress % 0x1000 != 0: - EdkLogger.error("build", PARAMETER_INVALID, "FIX_LOAD_TOP_MEMORY_ADDRESS is set to the invalid unaligned 4K value %s" % (self._LoadFixAddress)) + + # + # If command line defined, should override the value in DSC file. + # + if 'FIX_LOAD_TOP_MEMORY_ADDRESS' in GlobalData.gCommandLineDefines.keys(): + try: + self._LoadFixAddress = int(GlobalData.gCommandLineDefines['FIX_LOAD_TOP_MEMORY_ADDRESS'], 0) + except: + EdkLogger.error("build", PARAMETER_INVALID, "FIX_LOAD_TOP_MEMORY_ADDRESS %s is not valid dec or hex string" % (GlobalData.gCommandLineDefines['FIX_LOAD_TOP_MEMORY_ADDRESS'])) + + if self._LoadFixAddress < 0: + EdkLogger.error("build", PARAMETER_INVALID, "FIX_LOAD_TOP_MEMORY_ADDRESS is set to the invalid negative value 0x%x" % (self._LoadFixAddress)) + if self._LoadFixAddress != 0xFFFFFFFFFFFFFFFF and self._LoadFixAddress % 0x1000 != 0: + EdkLogger.error("build", PARAMETER_INVALID, "FIX_LOAD_TOP_MEMORY_ADDRESS is set to the invalid unaligned 4K value 0x%x" % (self._LoadFixAddress)) + return self._LoadFixAddress ## Retrieve RFCLanguage filter diff --git a/BaseTools/Source/Python/build/build.py b/BaseTools/Source/Python/build/build.py index 4abf611a0e..ef52162ea1 100644 --- a/BaseTools/Source/Python/build/build.py +++ b/BaseTools/Source/Python/build/build.py @@ -745,17 +745,8 @@ class Build(): EdkLogger.quiet("%-16s = %s" % ("EDK_TOOLS_PATH", os.environ["EDK_TOOLS_PATH"])) EdkLogger.info("") - if self.ArchList: - EdkLogger.info('%-16s = %s' % ("Architecture(s)", ' '.join(self.ArchList))) - EdkLogger.info('%-16s = %s' % ("Build target", ' '.join(self.BuildTargetList))) - EdkLogger.info('%-16s = %s' % ("Toolchain", ' '.join(self.ToolChainList))) - - EdkLogger.info('\n%-16s = %s' % ("Active Platform", self.PlatformFile)) - if self.ModuleFile: - EdkLogger.info('%-16s = %s' % ("Active Module", self.ModuleFile)) os.chdir(self.WorkspaceDir) - self.Progress.Start("\nProcessing meta-data") ## Load configuration # @@ -1241,7 +1232,8 @@ class Build(): self.FvList, self.CapList, self.SkuId, - self.UniFlag + self.UniFlag, + self.Progress ) self.Fdf = Wa.FdfFile self.LoadFixAddress = Wa.Platform.LoadFixAddress @@ -1316,7 +1308,9 @@ class Build(): self.FvList, self.CapList, self.SkuId, - self.UniFlag + self.UniFlag, + self.Progress, + self.ModuleFile ) self.Fdf = Wa.FdfFile self.LoadFixAddress = Wa.Platform.LoadFixAddress @@ -1401,7 +1395,8 @@ class Build(): self.FvList, self.CapList, self.SkuId, - self.UniFlag + self.UniFlag, + self.Progress ) self.Fdf = Wa.FdfFile self.LoadFixAddress = Wa.Platform.LoadFixAddress -- 2.39.2