www.digitalmars.com         C & C++   DMDScript  

digitalmars.D - A linux makefile template with dependency generator

Greetings all,

I'm posting a makefile template that is useful for Linux and a Perl script
which can generate dependencies for D source files. I hope someone can
make use of them. I'm also including the makefile for my project Hydrus
(http://hydrus.org) as a real world example of how to use the template. By
the way, the Perl script would probably work on windows, except for maybe
the crlf translation. It just does simple open() and close() calls.

Look at the comments in the makefile template for an explanation on how to
use it. A couple of notes about the Hydrus makefile. Hydrus has a KDE
interface that is built as a library, then linked via the dmd compiler. So
there are a series of custom rules for how to manage that.

Enjoy!

Chris Newton



begin 664 mkfile.tmpl.d
M(PHC(%1O('5S92!T:&ES(&UA:V5F:6QE('EO=2!M=7-T(&1E9FEN92!T87)G
M971S(&%N9"!T:&4 <V]U<F-E(&-O9&4 96%C:`HC('1A<F=E="!D97!E;F1S
M('5P;VXN($$ =&%R9V5T(&ES(&5I=&AE<B!A(&QI8G)A<GD ;W( 82!B:6YA
M<GDN"B,*(R!4;R!A9&0 82!L:6( =&%R9V5T+"!A9&0 =&AE(&YA;64 ;V8 
M=&AE(&]U='!U="!L:6)R87)Y('1O('1H92!,24)?5$%21T544PHC('9A<FEA
M8FQE+B!4:&5N(&1E9FEN92!A(')U;&4 =VET:"!T:&4 <V%M92!E>&%C="!N
M86UE(&%S('=H870 =V%S(&%D9&5D('1O"B, 3$E"7U1!4D=%5%,N(%1H:7, 
M<G5L92!M=7-T(&1E<&5N9"!U<&]N('1H92!O8FIE8W0 ;F%M92!O9B!T:&4 
M<V]U<F-E(&9I;&5S"B, :70 =7-E<RX 17AA;7!L93H*(PHC($Q)0E]405)'
M1513/20H3$E"1$E2*2]L:6)497-T+F$*(R`D*$Q)0D1)4BDO;&EB5&5S="YA
M.B`D*$]"2DQ/0RDO=&5S="]497-T+F\*(PHC(%1O(&%D9"!A(&)I;F%R>2!T
M87)G970L(&%D9"!T:&4 ;F%M92!O9B!T:&4 ;W5T<'5T(&)I;F%R>2!T;R!T
M:&4 0DE.7U1!4D=%5%,*(R!V87)I86)L92X 5&AE;B!D969I;F4 82!R=6QE
M('=H:6-H('1H92!S86UE(&5X86-T(&YA;64 87, =VAA="!W87, 861D960 
M=&\*(R!,24)?5$%21T544RX 5&AI<R!R=6QE(&UU<W0 9&5P96YD('5P;VX 
M=&AE(&]B:F5C="!N86UE(&]F('1H92!S;W5R8V4 9FEL97,*(R!I="!U<V5S
M+B!%>&%M<&QE. HC"B, 0DE.7U1!4D=%5%,])"A"24Y$25(I+W1E<W0*(R`D
M*$))3D1)4BDO=&5S=#H )"A/0DI,3T,I+W1E<W0O;6%I;BYO"B,*(R!4:&4 
M;&EB<F%R:65S('=I;&P 8F4 8G5I;'0 9FER<W0L('1H96X =&AE(&]B:F5C
M=', 9F]R('1H92!B:6YA<FEE<R!W:6QL(&)E"B, 8G5I;'0L('1H96X :70 
M=VEL;"!A;&P 8F4 ;&EN:V5D('1O9V5T:&5R+ HC"B, 0GD 9&5F875L="!O
M8FIE8W0 9FEL97, 87)E(&QO8V%T960 :6X )"A/0DI$25(I+"!L:6)R87)I
M97, :6X )"A,24)$25(I+`HC(&%N9"!B:6YA<FEE<R!I;B`D*$))3D1)4BDN
M(%1O(&-H86YG92!T:&4 9&ER96-T;W)I97,L(&-H86YG92!T:&]S92!V87)I
M86)L97,N"B,*(R!$97!E;F1E;F-I97, =VEL;"!B92!A=71O;6%T:6-L>2!G
M96YE<F%T960 =7-I;F< =&AE(&1D97!G96X <V-R:7!T(&EF(&ET(&ES"B, 
M9F]U;F0 :6X =&AE('!A=& N(%1H97D 87)E('-T;W)E9"!I;B!-86ME9FEL
M92YD97!S(&%N9"!S:&]U;&1N="!B92!S=&]R960 :6X*(R!S;W5R8V4 8V]N
M=')O;"X 268 =&AE(&9I;&4 9&]E<VYT(&5X:7-T+"!I="!W:6QL(&)E(&=E
M;F5R871E9"!A;F0 =7-E9`HC('1R86YS<&%R96YT;'DN"B,*(R!4:&5R92!A
M<F4 ='=O(&-O;G1R;VP =F%R:6%B;&5S.B`D*%9%3D1/4BD 86YD("0H0E5)
M3$0I+B!4;R!S=VET8V  8F5T=V5E; HC(&-O;7!I;&5R<R!A;F0 87-S;V-I
M871E9"!S>6YT87  9&\Z(&UA:V4 5D5.1$]2/6=D8PHC(%1O('-W:71C:"!B
M971W965N(&)U:6QD('1Y<&5S(&1O.B!M86ME($)524Q$/7)E;&5A<V4*(PH*
M"B,C(R,*(R,C(R` 1V5N97)A;"!V87)I86)L97,N(%=E(&1O;G0 =7-E('1H
M92!D969A=6QT(&UA:V4 =F%R:6%B;&5S(&9O<B!T:&4*(R,C(R` 8V]M<&EL
M97( 86YD(&9L86=S(&)E8V%U<V4 =V4 ;6%K92!O=7( ;W=N(&-O;7!I;&4 

M/2]U<W(O;&]C86PO:6YC;'5D92]$"D1)3D-3/2U))"A$7U1/4$E.0RDO<&AO
M8F]S("U))"A$7U1/4$E.0RD*15A44D%?1DQ!1U,]+20H1DQ!1U]/4"EV97)S
M:6]N/5!O<VEX" I,24Y+1DQ!1U,]"DQ)0E,]"D]"2D1)4CUO8FH*0DE.1$E2
M/6)I; I,24)$25(];&EB"E-20T1)4CUH>61R=7,*" HC(%-E;6DM875T;R!C
M;VUP;&5T:6]N(&]F('1H92!V87)I86)L97,N(%1W96%K('1H92!V87)I86)L
M97, 86)O=F4 9FER<W0N(%1H97-E"B, :&5R92!D97!E;F0 =7!O;B!T:&5M
M+ II9F5Q(" D*%9%3D1/4BDL9&UD*0H ($-/35!)3$52/61M9`H ($9,04=?
M3U`]"B` 3U541DE,13TM;V0D*&1I<B`D*$`I*0H ($]55$Q)3DL]+6]F)"A`
M*0IE;'-E"B` 0T]-4$E,15(]:38X-BUP8RUL:6YU>"UG;G4M9V1C"B` 1DQ!
M1U]/4#UF"B` 3U541DE,13TM;R`D*$`I"B` 3U543$E.2STM;R`D*$`I"F5N
M9&EF"FEF97$ *"0H0E5)3$0I+')E;&5A<V4I"B` 0E5)3$1?1DQ!1U,]+4\ 
M+20H1DQ!1U]/4"ER96QE87-E"F5L<V4*("!"54E,1%]&3$%'4STM9R`M)"A&
M3$%'7T]0*61E8G5G"F5N9&EF" I$1DQ!1U,])"A"54E,1%]&3$%'4RD )"A%

M4BD*1DE,14585#UD"D1$15!'14X]9&1E<&=E; H*"B, 5&AI<R!I<R!T;R!E
M;G-U<F4 =&AA="!M86ME(')U;G, )V%L;"< 8GD 9&5F875L="X*86QL. H*
M"B,C(R,*(R,C(R` 5&%R9V5T('9A<FEA8FQE<R!A;F0 <G5L97,*(R,C(PH*
M3$E"7U1!4D=%5%,]"D))3E]405)'1513/0I405)'1513/20H3$E"7U1!4D=%

M(')U;&5S+B!0;&%C92!C=7-T;VT <G5L97, =&AA="!D;VYT(&9I="!T:&4 
M;6]D96P :&5R92X*(R,C(PH*"B,C(R,*(R,C(PHC(R,C"B,C(R, ($EN(&=E
M;F5R86PL('1H97)E(&ES(&YO(&YE960 =&\ 961I="!B96QO=R!H97)E+ HC
M(R,C"B,C(R,*(R,C(PH*"B,C(R,*(R,C(R` 075T;VUA=&EC('9A<FEA8FQE
M<PHC(R,C" I34D-$25)3/20H<VAE;&P 9FEN9"`D*%-20T1)4BD +71Y<&4 

M1$E2*24L)"A/0DI,3T,I)2PD*%-20T1)4E,I*0H*"B,C(R,*(R,C(R` 36%I
M;B!R=6QE<PHC(R,C" I!3$P]9&ER<R`D*%1!4D=%5%,I"FEF97$ *"0H=VEL
M9&-A<F0 36%K969I;&4N9&5P*2Q-86ME9FEL92YD97`I"F%L;#H )"A!3$PI
M"F5L<V4*:69N97$ *"PD*&9I;F1S=')I;F< )"A$1$501T5.*2PD*'-H96QL
M('=H:6-H("0H1$1%4$=%3BD ,CXO9&5V+VYU;&PI*2D*86QL.B!D97!R96-U
M<G-E"F5L<V4*86QL.B`D*$%,3"D*96YD:68*96YD:68*" HD*$Q)0E]405)'
M1513*3H*"6%R(')C("0H0"D )"AP871S=6)S="`E+B0H1DE,14585"DL)2YO
M+"0H)"A`*2DI" ER86YL:6( )"A`*0H*)"A"24Y?5$%21T544RDZ("0H3$E"
M7U1!4D=%5%,I" DD*$-/35!)3$52*2`D*$1&3$%'4RD )"A,24Y+1DQ!1U,I
M("0H3U543$E.2RD )"AP871S=6)S="`E+B0H1DE,14585"DL)2YO+"0H)"A`

M*$))3D1)4BD )"A,24)$25(I"B0H3T)*1$E24RD )"A"24Y$25(I("0H3$E"

M"7)M("UF(&-O<F4 )"A405)'1513*0H)<FT +7)F("0H0DE.1$E2*2`D*$Q)
M0D1)4BD )"A/0DI$25(I" EF:6YD("X +6YA;64 )RI^)R`M97AE8R!R;2`M
M9B![?2!<.PH*9&5P<F5C=7)S93H 9&5P" EM86ME" II9FYE<2`H+"0H9FEN
M9'-T<FEN9R`D*$1$15!'14XI+"0H<VAE;&P =VAI8V  )"A$1$501T5.*2`R

M*2`D*$]"2D1)4BD )"A$1DQ!1U,I(#X 36%K969I;&4N9&5P"F5L<V4*9&5P
M. H)0&5C:&\ (F1D97!G96X <V-R:7!T(&YO="!F;W5N9"X 3F\ 9&5P96YD
M96YC:65S(&=E;F5R871E9"XB"F5N9&EF" HD*$]"2D1)4BDO)2YO(#H )2XD
M*$9)3$5%6%0I" DD*$-/35!)3$52*2`D*$]55$9)3$4I("UC("0H1$9,04=3
M*2`D*#PI" II9F5Q(" D*'=I;&1C87)D($UA:V5F:6QE+F1E<"DL36%K969I
C;&4N9&5P*0II;F-L=61E($UA:V5F:6QE+F1E<`IE;F1I9 H`
`
end



begin 775 ddepgen

M<FES($YE=W1O; HC("`*(R` 5&AI<R!S;V9T=V%R92!I<R!P<F]V:61E9"`G
M87,M:7,G+"!W:71H;W5T(&%N>2!E>'!R97-S(&]R(&EM<&QI960*(R` =V%R
M<F%N='DN("!);B!N;R!E=F5N="!W:6QL('1H92!A=71H;W)S(&)E(&AE;&0 
M;&EA8FQE(&9O<B!A;GD 9&%M86=E<PHC("!A<FES:6YG(&9R;VT =&AE('5S
M92!O9B!T:&ES('-O9G1W87)E+ HC("`*(R` 4&5R;6ES<VEO;B!I<R!G<F%N
M=&5D('1O(&%N>6]N92!T;R!U<V4 =&AI<R!S;V9T=V%R92!F;W( 86YY('!U
M<G!O<V4L"B, (&EN8VQU9&EN9R!C;VUM97)C:6%L(&%P<&QI8V%T:6]N<RP 
M86YD('1O(&%L=&5R(&ET(&%N9"!R961I<W1R:6)U=&4 :70*(R` 9G)E96QY
M+"!S=6)J96-T('1O('1H92!F;VQL;W=I;F< <F5S=')I8W1I;VYS. HC("`*
M(R` ,2X 5&AE(&]R:6=I;B!O9B!T:&ES('-O9G1W87)E(&UU<W0 ;F]T(&)E
M(&UI<W)E<')E<V5N=&5D.R!Y;W4 ;75S="!N;W0*(R` ("` 8VQA:6T =&AA
M="!Y;W4 =W)O=&4 =&AE(&]R:6=I;F%L('-O9G1W87)E+B!)9B!Y;W4 =7-E
M('1H:7, <V]F='=A<F4*(R` ("` :6X 82!P<F]D=6-T+"!A;B!A8VMN;W=L
M961G;65N="!I;B!T:&4 <')O9'5C="!D;V-U;65N=&%T:6]N('=O=6QD(&)E
M"B, ("` (&%P<')E8VEA=&5D(&)U="!I<R!N;W0 <F5Q=6ER960N"B, (`HC
M("`R+B!!;'1E<F5D('-O=7)C92!V97)S:6]N<R!M=7-T(&)E('!L86EN;'D 
M;6%R:V5D(&%S('-U8V L(&%N9"!M=7-T(&YO="!B90HC("` ("!M:7-R97!R
M97-E;G1E9"!A<R!B96EN9R!T:&4 ;W)I9VEN86P <V]F='=A<F4N"B, (`HC
M("`S+B!4:&ES(&YO=&EC92!M87D ;F]T(&)E(')E;6]V960 ;W( 86QT97)E
M9"!F<F]M(&%N>2!S;W5R8V4 9&ES=')I8G5T:6]N+ H*" IU<V4 4$]325  
M<7<H<W1R9G1I;64I.PIU<V4 4$]325  (CIS>7-?=V%I=%]H(CL*=7-E('-T
M<FEC=#L*=7-E('-T<FEC="`G<F5F<R<[" H*;7D 0&EN8VQU9&5S.PIM>2!`
M9FEL97,["FUY("1P87)S961);7!O<G1S/7M].PIM>2`D<W)C1&ER.PIM>2`D
M;V)J1&ER.PIM>2`D9&5E<#L*"FEF("AS8V%L87(H0$%21U8I(#P ,BD*>PH 
M("` <')I;G0 (E5S86=E.B!D9&5P9V5N(%LM9%T /'-R8V1I<CX /&]B:F1I
M<CX 6RU)+VEN8VQU9&4O9&ER72`N+BY<;B(["B` ("!P<FEN="`B7&XB.PH 
M("` <')I;G0 (D=E;F5R871E<R!M86ME9FEL92!R=6QE<R!F;W( <V]U<F-E
M(&9I;&4 9&5P96YD96YC:65S(&QI:V4Z7&XB.PH ("` <')I;G0 (EQN(CL*
M("` ('!R:6YT("( ("!O8FHO:'ED<G5S+V)A<V4O4G5N;F%B;&4N;SH +W5S
M<B]L;V-A;"]I;F-L=61E+T0O<&AO8F]S+W-T9"]T:')E860N9%QN(CL*("` 

M7BUD)"\I"GL*("` ('-H:69T.PH ("` )&1E97`],3L*?0HD<W)C1&ER/4!!
M4D=66S!=.PHD;V)J1&ER/4!!4D=66S%=.PH*;7D )&%R9SL*;7D )&%D9$%R
M9STP.PIF;W)E86-H("1A<F< *$!!4D=6*0I["B` ("!I9B`H)&%R9R`]?B`O
M7BU))"\I"B` ("![" DD861D07)G/3$["B` ("!]"B` ("!E;'-I9B`H)&%D
M9$%R9RD*("` ('L*"7!U<V  0&EN8VQU9&5S+"`D87)G.PH))&%D9$%R9STP
M.PH ("` ?0H ("` 96QS:68 *"1A<F< /7X +RU)+RD*("` ('L*"21A<F< 
M/7X <R\M22\O.PH)<'5S:"!`:6YC;'5D97,L("1A<F<["B` ("!]"GT*"D9I
M;F1&:6QE<R D<W)C1&ER*3L*"FUY("1F:6QE.PIF;W)E86-H("1F:6QE("A`
M9FEL97,I"GL*("` (%!R;V-E<W-&:6QE*"1F:6QE*3L*?0H*97AI="`P.PH*
M"B,*(R!&=6YC=&EO;G,*(PH*<W5B($9I;F1&:6QE<PI["B` ("!M>2`D9&ER
M/21?6S!=.PH ("` ;7D 0&9I;&5,:7-T.PH ("` ;7D )&9I;&4["B` ("!M
M>2`D9G5L;#L*"B` ("!I9B`H+68 )&1I<BD*("` ('L*"7!U<V  0&9I;&5S
M+"`D9&ER.PH ("` ?0H ("` 96QS90H ("` >PH);W!E;F1I<BA&24Q%3$E3
M5"P (B1D:7(B*3L*"4!F:6QE3&ES=#UG<F5P('L (2]>7"XO('T <F5A9&1I
M<BA&24Q%3$E35"D[" EC;&]S961I<BA&24Q%3$E35"D[" H)9F]R96%C:"`D
M9FEL92`H0&9I;&5,:7-T*0H)>PH)("` ("1F=6QL/2(D9&ER+R1F:6QE(CL*
M"2` ("!I9B`H+60 (B1F=6QL(BD*"2` ("![" D)1FEN9$9I;&5S*"(D9G5L
M;"(I.PH)("` ('T*"2` ("!E;'-I9B`H*"UF("(D9G5L;"(I("8F(" D9G5L
M;"`]?B`O7"YD)"\I*0H)("` ('L*"0EP=7-H($!F:6QE<RP )&9U;&P[" D 
M("` ?0H)?0H ("` ?0I]" IS=6( 1FEN9$EN8VQU9&4*>PH ("` ;7D )&9I
M;&4])%];,%T["B` ("!M>2`D:6YC;'5D93L*"B` ("!I9B`H+68 (B1F:6QE
M(BD*("` ('L*"7)E='5R;B`D9FEL93L*("` ('T*"B` ("!F;W)E86-H("1I
M;F-L=61E("A`:6YC;'5D97,I"B` ("![" EI9B`H+68 (B1I;F-L=61E+R1F
M:6QE(BD*"7L*"2` ("!R971U<FX (B1I;F-L=61E+R1F:6QE(CL*"7T*("` 
M('T*"B` ("!R971U<FX )&9I;&4["GT*"B, 96%S>2!A;F0 8VAE97-Y('=A
M>2X :&]P969U;&QY('1H97)E(&%R96YT('1H870 ;6%N>2!H=75U9V4 1"!F
M:6QE<R!A<F]U;F0N+BX*<W5B(%!R;V-E<W-&:6QE"GL*("` (&UY("1F:6QE
M/21?6S!=.PH ("` ;7D )&EM<#L*("` (&UY("1I;7!O<G1S/7M].PH*("` 
M(%!R;V-E<W-);7!O<G1S*"1F:6QE+"`D:6UP;W)T<RD[" H ("` )&9I;&4]
M(B1O8FI$:7(O)&9I;&4B.PH ("` )&9I;&4 /7X <R]<+F0D+UPN;R\["B` 
M("!P<FEN="`B)&9I;&4Z(CL*("` (&9O<F5A8V  )&EM<"`H:V5Y<R`E>R1I
M;7!O<G1S?2D*("` ('L*"7!R:6YT("( )&EM<"(["B` ("!]"B` ("!P<FEN
M="`B7&XB.PI]" IS=6( 4')O8V5S<TEM<&]R=',*>PH ("` ;7D )&9I;&4]
M)%];,%T["B` ("!M>2`D:6UP;W)T<STD7ULQ73L*("` (&UY("1F:6QE26UP
M;W)T<SU[?3L*("` (&UY($!A<G)A>3$["B` ("!M>2!`87)R87DR.PH ("` 
M;7D 0&%R<F%Y,SL*("` (&UY("1L:6YE.PH ("` ;7D )&-O;G1E;G1S.PH 
M("` ;7D )&EM<#L*("` (&UY("1U;F9I;FES:&5D3&EN93L*"B` ("!I9B`H
M)&1E97` )B8 )'!A<G-E9$EM<&]R=',M/GLD9FEL97TI"B` ("![" EF;W)E
M86-H("1I;7` *&ME>7, )7LD<&%R<V5D26UP;W)T<RT^>R1F:6QE?7TI" E[
M" D ("` :68 *"$D:6UP;W)T<RT^>R1I;7!]*0H)("` ('L*"0DD:6UP;W)T
M<RT^>R1I;7!]/3$[" D)4')O8V5S<TEM<&]R=',H)&EM<"P )&EM<&]R=',I
M.PH)("` ('T*"7T*"7)E='5R;CL*("` ('T*"B` ("!O<&5N*$9)3$4L("(\
M("1F:6QE(BD["B` ("`D8V]N=&5N=',]9&\ >R!L;V-A;" D+RD[(#Q&24Q%
M/B!].PH ("` 8VQO<V4H1DE,12D[" H ("` )&-O;G1E;G1S(#U^(',O7',K
M+R`O.PH ("` 0&%R<F%Y,3US<&QI=" O7&XO+"`D8V]N=&5N=',I.PH ("` 
M9F]R96%C:"`D;&EN92`H0&%R<F%Y,2D*("` ('L*"21L:6YE(#U^(',O7"]<
M+RXJ+R\[" DD;&EN92`]?B!S+UY<<RLO+SL*"21L:6YE(#U^(',O7',K)"\O
M.PH):68 *"1U;F9I;FES:&5D3&EN92D*"7L*"2` ("`D;&EN93TB)'5N9FEN
M:7-H961,:6YE("1L:6YE(CL*"2` ("`D=6YF:6YI<VAE9$QI;F4],#L*"7T*
M"6EF(" A*"1L:6YE(#U^("]<.R0O*2D*"7L*"2` ("`D=6YF:6YI<VAE9$QI
M;F4])&QI;F4[" E]" EE;'-E" E[" D ("` 0&%R<F%Y,CUS<&QI=" O7#LO
M+"`D;&EN92D[" D ("` 9F]R96%C:"`D;&EN92`H0&%R<F%Y,BD*"2` ("![
M" D):68 *" D;&EN92`]?B`O7FEM<&]R="`O*2!\?"`H)&QI;F4 /7X +R!I
M;7!O<G0 +RDI" D)>PH)"2` ("`D;&EN92`]?B!S+UYI;7!O<G0O+SL*"0D 
M("` )&QI;F4 /7X <R\N*FEM<&]R="\O.PH)"2` ("`D;&EN92`]?B!S+UQS
M*R\O9SL*"0D ("` 0&%R<F%Y,SUS<&QI=" O+"\L("1L:6YE*3L*"0D ("` 
M9F]R96%C:"`D:6UP("A`87)R87DS*0H)"2` ("![" D)"21I;7` /7X <R]<
M+B]<+R]G.PH)"0DD:6UP/49I;F1);F-L=61E*"(D:6UP+F0B*3L*"0D))&EM
M<&]R=',M/GLD:6UP?3TQ.PH)"0DD9FEL94EM<&]R=',M/GLD:6UP?3TQ.PH)
M"2` ("!]" D)?0H)("` ('T*"7T*("` ('T*"B` ("!I9B`H)&1E97`I"B` 
M("![" DD<&%R<V5D26UP;W)T<RT^>R1F:6QE?3TD9FEL94EM<&]R=',[" EF
M;W)E86-H("1I;7` *&ME>7, )7LD9FEL94EM<&]R='-]*0H)>PH)("` (%!R
I;V-E<W-);7!O<G1S*"1I;7`L("1I;7!O<G1S*3L*"7T*("` ('T*?0H`
`
end



begin 664 Makefile.hydrus
M(PHC(%1O('5S92!T:&ES(&UA:V5F:6QE('EO=2!M=7-T(&1E9FEN92!T87)G
M971S(&%N9"!T:&4 <V]U<F-E(&-O9&4 96%C:`HC('1A<F=E="!D97!E;F1S
M('5P;VXN($$ =&%R9V5T(&ES(&5I=&AE<B!A(&QI8G)A<GD ;W( 82!B:6YA
M<GDN"B,*(R!4;R!A9&0 82!L:6( =&%R9V5T+"!A9&0 =&AE(&YA;64 ;V8 
M=&AE(&]U='!U="!L:6)R87)Y('1O('1H92!,24)?5$%21T544PHC('9A<FEA
M8FQE+B!4:&5N(&1E9FEN92!A(')U;&4 =VET:"!T:&4 <V%M92!E>&%C="!N
M86UE(&%S('=H870 =V%S(&%D9&5D('1O"B, 3$E"7U1!4D=%5%,N(%1H:7, 
M<G5L92!M=7-T(&1E<&5N9"!U<&]N('1H92!O8FIE8W0 ;F%M92!O9B!T:&4 
M<V]U<F-E(&9I;&5S"B, :70 =7-E<RX 17AA;7!L93H*(PHC($Q)0E]405)'
M1513/20H3$E"1$E2*2]L:6)497-T+F$*(R`D*$Q)0D1)4BDO;&EB5&5S="YA
M.B`D*$]"2DQ/0RDO=&5S="]497-T+F\*(PHC(%1O(&%D9"!A(&)I;F%R>2!T
M87)G970L(&%D9"!T:&4 ;F%M92!O9B!T:&4 ;W5T<'5T(&)I;F%R>2!T;R!T
M:&4 0DE.7U1!4D=%5%,*(R!V87)I86)L92X 5&AE;B!D969I;F4 82!R=6QE
M('=H:6-H('1H92!S86UE(&5X86-T(&YA;64 87, =VAA="!W87, 861D960 
M=&\*(R!,24)?5$%21T544RX 5&AI<R!R=6QE(&UU<W0 9&5P96YD('5P;VX 
M=&AE(&]B:F5C="!N86UE(&]F('1H92!S;W5R8V4 9FEL97,*(R!I="!U<V5S
M+B!%>&%M<&QE. HC"B, 0DE.7U1!4D=%5%,])"A"24Y$25(I+W1E<W0*(R`D
M*$))3D1)4BDO=&5S=#H )"A/0DI,3T,I+W1E<W0O;6%I;BYO"B,*(R!4:&4 
M;&EB<F%R:65S('=I;&P 8F4 8G5I;'0 9FER<W0L('1H96X =&AE(&]B:F5C
M=', 9F]R('1H92!B:6YA<FEE<R!W:6QL(&)E"B, 8G5I;'0L('1H96X :70 
M=VEL;"!A;&P 8F4 ;&EN:V5D('1O9V5T:&5R+ HC"B, 0GD 9&5F875L="!O
M8FIE8W0 9FEL97, 87)E(&QO8V%T960 :6X )"A/0DI$25(I+"!L:6)R87)I
M97, :6X )"A,24)$25(I+`HC(&%N9"!B:6YA<FEE<R!I;B`D*$))3D1)4BDN
M(%1O(&-H86YG92!T:&4 9&ER96-T;W)I97,L(&-H86YG92!T:&]S92!V87)I
M86)L97,N"B,*(R!$97!E;F1E;F-I97, =VEL;"!B92!A=71O;6%T:6-L>2!G
M96YE<F%T960 =7-I;F< =&AE(&1D97!G96X <V-R:7!T(&EF(&ET(&ES"B, 
M9F]U;F0 :6X =&AE('!A=& N(%1H97D 87)E('-T;W)E9"!I;B!-86ME9FEL
M92YD97!S(&%N9"!S:&]U;&1N="!B92!S=&]R960 :6X*(R!S;W5R8V4 8V]N
M=')O;"X 268 =&AE(&9I;&4 9&]E<VYT(&5X:7-T+"!I="!W:6QL(&)E(&=E
M;F5R871E9"!A;F0 =7-E9`HC('1R86YS<&%R96YT;'DN"B,*(R!4:&5R92!A
M<F4 ='=O(&-O;G1R;VP =F%R:6%B;&5S.B`D*%9%3D1/4BD 86YD("0H0E5)
M3$0I+B!4;R!S=VET8V  8F5T=V5E; HC(&-O;7!I;&5R<R!A;F0 87-S;V-I
M871E9"!S>6YT87  9&\Z(&UA:V4 5D5.1$]2/6=D8PHC(%1O('-W:71C:"!B
M971W965N(&)U:6QD('1Y<&5S(&1O.B!M86ME($)524Q$/7)E;&5A<V4*(PH*
M"B,C(R,*(R,C(R` 1V5N97)A;"!V87)I86)L97,N(%=E(&1O;G0 =7-E('1H
M92!D969A=6QT(&UA:V4 =F%R:6%B;&5S(&9O<B!T:&4*(R,C(R` 8V]M<&EL
M97( 86YD(&9L86=S(&)E8V%U<V4 =V4 ;6%K92!O=7( ;W=N(&-O;7!I;&4 

M/2]U<W(O;&]C86PO:6YC;'5D92]$"D1)3D-3/2U))"A$7U1/4$E.0RDO<&AO
M8F]S("U))"A$7U1/4$E.0RD*15A44D%?1DQ!1U,]+20H1DQ!1U]/4"EV97)S
M:6]N/5!O<VEX" I,24Y+1DQ!1U,]"DQ)0E,]+VAO;64O8F%R;VXO1"]L:6(O
M;&EB;6%N9V\N82`O:&]M92]B87)O;B]$+VQI8B]L:6)L;V-K<RYA"D)!4T5,
M24)3/5P*"20H3$E"1$E2*2]L:6)0<F]T;T)U9F9E<E1E>'0N82!<" DD*$Q)
M0D1)4BDO;&EB4')O=&]"=69F97(N82!<" DD*$Q)0D1)4BDO;&EB4')O=&\N
M82!<" DD*$Q)0D1)4BDO;&EB4')O=&]!=71H+F$ 7`H))"A,24)$25(I+VQI
M8E!R;W1O0V]M;6%N9',N82!<" DD*$Q)0D1)4BDO;&EB4')O=&]5=&EL+F$ 
M7`H))"A,24)$25(I+VQI8D)A<V5.970N82!<" DD*$Q)0D1)4BDO;&EB0F%S
M92YA(`I35$%424-,24)3/20H0D%314Q)0E,I"D]"2D1)4CUO8FH*0DE.1$E2
M/6)I; I,24)$25(];&EB"E-20T1)4CUH>61R=7,*" HC(%-E;6DM875T;R!C
M;VUP;&5T:6]N(&]F('1H92!V87)I86)L97,N(%1W96%K('1H92!V87)I86)L
M97, 86)O=F4 9FER<W0N(%1H97-E"B, :&5R92!D97!E;F0 =7!O;B!T:&5M
M+ II9F5Q(" D*%9%3D1/4BDL9&UD*0H ($-/35!)3$52/61M9`H ($9,04=?
M3U`]"B` 3U541DE,13TM;V0D*&1I<B`D*$`I*0H ($]55$Q)3DL]+6]F)"A`
M*0IE;'-E"B` 0T]-4$E,15(]:38X-BUP8RUL:6YU>"UG;G4M9V1C"B` 1DQ!
M1U]/4#UF"B` 3U541DE,13TM;R`D*$`I"B` 3U543$E.2STM;R`D*$`I"F5N
M9&EF" II9F5Q(" D*$)524Q$*2QR96QE87-E*0H ($)524Q$7T9,04=3/2U/
M("TD*$9,04=?3U`I<F5L96%S90IE;'-E"B` 0E5)3$1?1DQ!1U,]+6< +20H
M1DQ!1U]/4"ED96)U9PIE;F1I9 H*1$9,04=3/20H0E5)3$1?1DQ!1U,I("0H
M15A44D%?1DQ!1U,I("0H1$E.0U,I"D]"2DQ/0STD*$]"2D1)4BDO)"A34D-$
M25(I"D9)3$5%6%0]9`I$1$501T5./75T:6PO9&1E<&=E; H*"B, 5&AI<R!I
M<R!T;R!E;G-U<F4 =&AA="!M86ME(')U;G, )V%L;"< 8GD 9&5F875L="X*
M86QL. H*"B,C(R,*(R,C(R` 5&%R9V5T('9A<FEA8FQE<R!A;F0 <G5L97,*
M(R,C(PH*3$E"7U1!4D=%5%,]7`H))"A,24)$25(I+VQI8D)A<V4N82!<" DD
M*$Q)0D1)4BDO;&EB0F%S94YE="YA(%P*"20H3$E"1$E2*2]L:6)0<F]T;RYA
M(%P*"20H3$E"1$E2*2]L:6)0<F]T;T%U=& N82!<" DD*$Q)0D1)4BDO;&EB
M4')O=&]"=69F97(N82!<" DD*$Q)0D1)4BDO;&EB4')O=&]"=69F97)497AT
M+F$ 7`H))"A,24)$25(I+VQI8E!R;W1O0V]M;6%N9',N82!<" DD*$Q)0D1)
M4BDO;&EB4')O=&]5=&EL+F$ 7`H))"A,24)$25(I+VQI8D-L:65N="YA(%P*







M;F%B;&4N;R!<" DD*$]"2DQ/0RDO8F%S92]3:6=(86YD;&5R+F\ 7`H))"A/
M0DI,3T,I+V)A<V4O5V%I=$]B:F5C="YO"F)A<V4Z("0H3$E"1$E2*2]L:6)"
M87-E+F$*)"A,24)$25(I+VQI8D)A<V4N83H )" D*$Q)0D1)4BDO;&EB0F%S
M92YA*0H*)"A,24)$25(I+VQI8D)A<V5.970N83U<" DD*$]"2DQ/0RDO8F%S

M:6-K;&53=')E86TN;R!<" DD*$]"2DQ/0RDO8F%S92]N970O4&EC:VQE4W1R
M96%M4V5R=F5R+F\*8F%S92]N970Z("0H3$E"1$E2*2]L:6)"87-E3F5T+F$*
M)"A,24)$25(I+VQI8D)A<V5.970N83H )" D*$Q)0D1)4BDO;&EB0F%S94YE
M="YA*0H*)"A,24)$25(I+VQI8E!R;W1O+F$]7`H))"A/0DI,3T,I+W!R;W1O
M+T-O;6UA;F0N;R!<" DD*$]"2DQ/0RDO<')O=&\O0V]M;6%N9$AA;F1L97(N


M;R!<" DD*$]"2DQ/0RDO<')O=&\O4V5S<VEO;BYO"G!R;W1O.B`D*$Q)0D1)
M4BDO;&EB4')O=&\N80HD*$Q)0D1)4BDO;&EB4')O=&\N83H )" D*$Q)0D1)
M4BDO;&EB4')O=&\N82D*"B0H3$E"1$E2*2]L:6)0<F]T;T%U=& N83U<" DD

M*2]P<F]T;R]A=71H+U5S97(N;R!<" DD*$]"2DQ/0RDO<')O=&\O875T:"]5
M<V5R4W1O<F4N;PIP<F]T;R]A=71H.B`D*$Q)0D1)4BDO;&EB4')O=&]!=71H
M+F$*)"A,24)$25(I+VQI8E!R;W1O075T:"YA.B`D*"0H3$E"1$E2*2]L:6)0
M<F]T;T%U=& N82D*"B0H3$E"1$E2*2]L:6)0<F]T;T)U9F9E<BYA/5P*"20H

M*$Q)0D1)4BDO;&EB4')O=&]"=69F97(N80HD*$Q)0D1)4BDO;&EB4')O=&]"
M=69F97(N83H )" D*$Q)0D1)4BDO;&EB4')O=&]"=69F97(N82D*"B0H3$E"
M1$E2*2]L:6)0<F]T;T)U9F9E<E1E>'0N83U<" DD*$]"2DQ/0RDO<')O=&\O

M=69F97(O=&5X="]38W)A=&-H0G5F9F5R+F\ 7`H))"A/0DI,3T,I+W!R;W1O
M+V)U9F9E<B]T97AT+U1E>'1"=69F97(N;PIP<F]T;R]B=69F97(O=&5X=#H 
M)"A,24)$25(I+VQI8E!R;W1O0G5F9F5R5&5X="YA"B0H3$E"1$E2*2]L:6)0
M<F]T;T)U9F9E<E1E>'0N83H )" D*$Q)0D1)4BDO;&EB4')O=&]"=69F97)4


M+V-O;6UA;F1S+V1E8VPN;PIP<F]T;R]C;VUM86YD<SH )"A,24)$25(I+VQI

M.B`D*"0H3$E"1$E2*2]L:6)0<F]T;T-O;6UA;F1S+F$I" HD*$Q)0D1)4BDO
M;&EB4')O=&]5=&EL+F$]7`H))"A/0DI,3T,I+W!R;W1O+W5T:6PO2V5Y1&5F
M+F\*<')O=&\O=71I;#H )"A,24)$25(I+VQI8E!R;W1O571I;"YA"B0H3$E"
M1$E2*2]L:6)0<F]T;U5T:6PN83H )" D*$Q)0D1)4BDO;&EB4')O=&]5=&EL
M+F$I" HD*$Q)0D1)4BDO;&EB0VQI96YT+F$]7`H))"A/0DI,3T,I+V-L:65N

M97(N;R!<" DD*$]"2DQ/0RDO8VQI96YT+T-L:65N=$]P=&EO;G,N;PIC;&EE

M+F$Z("0H)"A,24)$25(I+VQI8D-L:65N="YA*0H*)"A,24)$25(I+VQI8D-L
M:65N=$,N83U<" DD*$]"2DQ/0RDO8VQI96YT+V,O0T)I;F1I;F<N;R!<" DD
M*$]"2DQ/0RDO8VQI96YT+V,O0U-E<W-I;VXN;PIC;&EE;G0O8SH )"A,24)$
M25(I+VQI8D-L:65N=$,N80HD*$Q)0D1)4BDO;&EB0VQI96YT0RYA.B`D*"0H

M+VAY9')U<V0 )"A"24Y$25(I+VMH>61R=7,*"B0H0DE.1$E2*2]H>61R=7-D


M86EN+F\*:'ED<G5S9#H )"A"24Y$25(I+VAY9')U<V0*)"A"24Y$25(I+VAY
M9')U<V0Z("0H)"A"24Y$25(I+VAY9')U<V0I" HD*$))3D1)4BDO:VAY9')U
M<SU<" DD*$]"2DQ/0RDO8VQI96YT+V,O;6%I;BYO"FMH>61R=7,Z("0H0DE.
M1$E2*2]K:'ED<G5S"B0H0DE.1$E2*2]K:'ED<G5S.B`D*"0H0DE.1$E2*2]K
M:'ED<G5S*0H*"E1!4D=%5%,])"A,24)?5$%21T544RD )"A"24Y?5$%21T54
M4RD*" HC(R,C"B,C(R, ($-U<W1O;2!T87)G970 <G5L97,N(%!L86-E(&-U
M<W1O;2!R=6QE<R!T:&%T(&1O;G0 9FET('1H92!M;V1E;"!H97)E+ HC(R,C
M" IK:'ED<G5S+V-O;F9I9W5R93H 7`H):VAY9')U<R\J+F%M(%P*"6MH>61R
M=7,O8V]N9FEG=7)E+FEN+FEN(%P*"6MH>61R=7,O<W)C+RHN86T*:VAY9')U

M"FMH>61R=7,O36%K969I;&4Z(&MH>61R=7,O8V]N9FEG=7)E" DH8V0 :VAY

M3$%'4STB+4DN+B\N+B]H>61R=7,O8VQI96YT+V,B("XO8V]N9FEG=7)E*0IK
M:'ED<G5S+W-R8R]L:6)K:'ED<G5S+F$Z(%P*"6MH>61R=7,O<W)C+RHN8W!P
M(%P*"6MH>61R=7,O<W)C+RHN:"!<" EK:'ED<G5S+W-R8R\J+G5I(%P*"6MH
M>61R=7,O36%K969I;&4*:VAY9')U<R]S<F,O;&EB:VAY9')U<RYA. H)*&-D
M(&MH>61R=7,[(&UA:V4I"B0H0DE.1$E2*2]K:'ED<G5S.B!35$%424-,24)3
M*ST )"A,24)$25(I+VQI8D-L:65N=$,N82`D*$Q)0D1)4BDO;&EB0VQI96YT
M+F$ )"A"05-%3$E"4RD :VAY9')U<R]S<F,O;&EB:VAY9')U<RYA("U,+6QK
M9&5U:2`D*$Q)0D1)4BDO;&EB0VQI96YT0RYA"B0H0DE.1$E2*2]K:'ED<G5S

M;&5A;BUK:'ED<G5S"F-L96%N+6MH>61R=7,Z" DM*&-D(&MH>61R=7,[(&UA
M:V4 8VQE86XI"F1I<W1C;&5A;CH 8VQE86X*"2TH8V0 :VAY9')U<SL ;6%K
M92!D:7-T8VQE86XI" ER;2`M<F8 :VAY9')U<R]A=71O;31T92YC86-H90H*
M"B,C(R,*(R,C(PHC(R,C"B,C(R, ($EN(&=E;F5R86PL('1H97)E(&ES(&YO
M(&YE960 =&\ 961I="!B96QO=R!H97)E+ HC(R,C"B,C(R,*(R,C(PH*" HC

M*'-H96QL(&9I;F0 )"A34D-$25(I("UT>7!E(&0 ?"!G<F5P("UV("=<+G-V

M)"A34D-$25)3*2D*" HC(R,C"B,C(R, ($UA:6X <G5L97,*(R,C(PH*04Q,
M/61I<G, )"A405)'1513*0II9F5Q(" D*'=I;&1C87)D($UA:V5F:6QE+F1E
M<"DL36%K969I;&4N9&5P*0IA;&PZ("0H04Q,*0IE;'-E"FEF;F5Q(" L)"AF
M:6YD<W1R:6YG("0H1$1%4$=%3BDL)"AS:&5L;"!W:&EC:"`D*$1$15!'14XI

M3$PI"F5N9&EF"F5N9&EF" H*)"A,24)?5$%21T544RDZ" EA<B!R8R`D*$`I
M("0H<&%T<W5B<W0 )2XD*$9)3$5%6%0I+"4N;RPD*"0H0"DI*0H)<F%N;&EB

M24Q%4BD )"A$1DQ!1U,I("0H3$E.2T9,04=3*2`D*$]55$Q)3DLI("0H<&%T
M<W5B<W0 )2XD*$9)3$5%6%0I+"4N;RPD*"0H0"DI*2`D*%-4051)0TQ)0E,I
M("0H3$E"4RD*"F1I<G,Z("0H3T)*1$E24RD )"A"24Y$25(I("0H3$E"1$E2
M*0HD*$]"2D1)4E,I("0H0DE.1$E2*2`D*$Q)0D1)4BDZ" EM:V1I<B`M<"`D

M04XI" IC;&5A;BUC;VUM;VXZ" ER;2`M9B!C;W)E("0H5$%21T544RD*"7)M
M("UR9B`D*$))3D1)4BD*"69I;F0 +B`M;F%M92`G*GXG("UE>&5C(')M("UF
M('M](%P[" IC;&5A;BUD. H)9FEN9"`D*$]"2D1)4BD +6YA;64 )RHN;R< 
M+65X96, <FT +68 >WT 7#L*"7)M("UR9B`D*$Q)0D1)4BDO* H*9&5P<F5C
M=7)S93H 9&5P" EM86ME" II9FYE<2`H+"0H9FEN9'-T<FEN9R`D*$1$15!'
M14XI+"0H<VAE;&P =VAI8V  )"A$1$501T5.*2`R/B]D978O;G5L;"DI*0ID

M1DQ!1U,I(#X 36%K969I;&4N9&5P"F5L<V4*9&5P. H)0&5C:&\ (F1D97!G
M96X <V-R:7!T(&YO="!F;W5N9"X 3F\ 9&5P96YD96YC:65S(&=E;F5R871E
M9"XB"F5N9&EF" HD*$]"2D1)4BDO)2YO(#H )2XD*$9)3$5%6%0I" DD*$-/
M35!)3$52*2`D*$]55$9)3$4I("UC("0H1$9,04=3*2`D*#PI" II9F5Q(" D
M*'=I;&1C87)D($UA:V5F:6QE+F1E<"DL36%K969I;&4N9&5P*0II;F-L=61E
4($UA:V5F:6QE+F1E<`IE;F1I9 H`
`
end
Jan 09 2005